タイプアサーションとTypeScriptの新しい「as」演算子の違いは何ですか?


143

TypeScript仕様がタイプアサーションと呼ぶものに違いはありますか?

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

そして新しい asオペレーター:

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

どちらも通常、コンパイル時のキャストに使用されますか?

回答:


168

違いは、それas CircleはTSXファイルで機能しますが<Circle>、JSX構文と競合します。asこのために導入されました。

たとえば、.tsxファイル内の次のコード:

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

次のエラーが発生します。

エラーTS17002:「Circle」の対応するJSX終了タグが必要です。

ただし、問題as Circleなく動作します。

as Circleこれから使用します。それはです推奨構文。


39

Wikiページから:「TypeScript [1.6]の新機能」:

新しい.tsxファイル拡張子とas演算子

TypeScript 1.6では、新しい.tsxファイル拡張子が導入されています。この拡張機能は2つのことを行います。TypeScriptファイル内でJSXを有効にし、新しいas演算子をデフォルトのキャスト方法にします(JSX式とTypeScriptプレフィックスキャスト演算子のあいまいさを削除します)。例えば:

var x = <any> foo; 
// is equivalent to:
var x = foo as any;
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.