私たちが知っているように、型キャストは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];
また失敗します。どうすればそれらのコードを書き換えることができますか?.
+!!
を使用して、ブール値に変換してから数値に変換できます。
const action: string = actions[+!!isPlay]
これは、たとえば、3つの条件のうち少なくとも2つ、または厳密に1つの条件を保持する場合に役立ちます。
const ok = (+!!something) + (+!!somethingelse) + (+!!thirdthing) > 1
const ok = (+!!something) + (+!!somethingelse) + (+!!thirdthing) === 1