web-dev-qa-db-fra.com

Dans TypeScript, comment convertir un booléen en nombre, comme 0 ou 1

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.

12
a2htray yuen

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
0
user239558