web-dev-qa-db-ja.com

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

TypeScript仕様で型アサーションと呼ばれるものに違いはありますか?

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

neweras演算子:

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

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

97
mk.

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

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

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

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

エラーTS17002:「サークル」に対応するJSX終了タグが必要です。

ただし、as Circleは正常に機能します。

これからas Circleを使用してください。 推奨 構文です。

120
David Sherret

From 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;
28
Martin Vseticka