Comme nous le savons, le transtypage de type est appelé type d'assertion dans TypeScript. Et la section de code suivante:
// the variable will change to true at onetime
let isPlay: boolean = false;
let actions: string[] = ['stop', 'play'];
let action: string = actions[<number> isPlay];
À la compilation, ça tourne mal
Error:(56, 35) TS2352: Neither type 'boolean' nor type 'number' is assignable to the other.
Ensuite, j'essaie d'utiliser le type any
:
let action: string = actions[<number> <any> isPlay];
Allez aussi mal. Comment puis-je réécrire ces codes.
Vous pouvez convertir n'importe quoi en booléen puis en nombre en utilisant +!!
:
const action: string = actions[+!!isPlay]
Cela peut être utile lorsque, par exemple, vous souhaitez qu'au moins deux conditions sur trois soient respectées, ou exactement une condition:
const ok = (+!!something) + (+!!somethingelse) + (+!!thirdthing) > 1
const ok = (+!!something) + (+!!somethingelse) + (+!!thirdthing) === 1