assertion(@TypeScript)

TypeScriptにおいてannotationは頻繁に登場しますが、assertionは他の言語と同じく使い方は例外的(例えばテスト用とか)だろうと思います。

以下のコードではnumber | stringの戻りの型をformatInput()の引数とするために(string型)とするためにinput as stringが使われています。”is“(user defined type guard)と似てはいますが、ここは”as“ではないといけません。

// escape hatch(assert the type)
function formatInput(input: string) {
  console.log(input)
}

function getUserInput(): number | string {
  return 123;
}
let input = getUserInput();
formatInput(input as string);
表記は、
formatInput(<string>input);
でも等価ですが、TSX(React)構文と衝突の可能性があるので”as”で明示する表現を使うべきだと。いずれにしても使用シーンは限定的で常時使う機能ではありません。

 

admin