1. ホーム
  2. casting

[解決済み] TypeScriptのタイプアサーションと新しい演算子であるas`の違いは何ですか?

2022-04-23 23:31:27

質問

TypeScriptの仕様では、タイプアサーションと呼ばれていますが、何か違いがあるのでしょうか?

var circle = <Circle> createShape("circle");

そして 新しい as 演算子を使用します。

var circle = createShape("circle") as Circle;

どちらも、コンパイル時のキャスティングによく使われるものですね?

どのように解決するのですか?

その差は as Circle は TSX ファイルで動作しますが <Circle> はJSXの構文と矛盾する。 as が導入されたのは、このためである。

例えば、以下のコードを .tsx ファイルを作成します。

var circle = <Circle> createShape("circle");

以下のようなエラーになります。

エラー TS17002: Circle'に対応する JSX 閉鎖タグが必要です。

しかし as Circle は問題なく動作します。

使用方法 as Circle これからは それは 推奨 の構文があります。