web-dev-qa-db-ja.com

TypeScriptでは、ブール値を0や1などの数値にキャストする方法

私たちが知っているように、型キャストはTypeScriptではアサーション型と呼ばれています。そして次のコードセクション:

// the variable will change to true at onetime
let isPlay: boolean = false;
let actions: string[] = ['stop', 'play'];
let action: string = actions[<number> isPlay];

コンパイル時に失敗する

Error:(56, 35) TS2352: Neither type 'boolean' nor type 'number' is assignable to the other.

次に、anyタイプを使用してみます。

let action: string = actions[<number> <any> isPlay];

また失敗します。どうすればそれらのコードを書き換えることができますか?.

12
a2htray yuen

+!!を使用して、ブール値に変換してから数値に変換できます。

const action: string = actions[+!!isPlay]

これは、たとえば、3つの条件のうち少なくとも2つ、または厳密に1つの条件を保持する場合に役立ちます。

const ok = (+!!something)  + (+!!somethingelse) + (+!!thirdthing) > 1
const ok = (+!!something)  + (+!!somethingelse) + (+!!thirdthing) === 1
0
user239558