TypeScript'te tür iddiaları ile daha yeni "operatör" arasında bir fark var mı?


143

TypeScript spesifikasyonunun bir tür iddiası olarak adlandırdığı arasında bir fark var mı:

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

Ve yeni as operatör:

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

Her ikisi de tipik olarak derleme zamanı döküm için mi kullanılır?

Yanıtlar:


168

Aradaki fark as CircleTSX dosyalarında çalışıyor ancak <Circle>JSX sözdizimi ile çakışıyor. asbu nedenle tanıtıldı.

Örneğin, bir .tsxdosyada aşağıdaki kod :

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

Aşağıdaki hatayla sonuçlanır:

hata TS17002: 'Circle' için karşılık gelen JSX kapatma etiketi bekleniyor.

Ancak, as Circlegayet iyi çalışacaktır.

as CircleArtık kullanın . Bu var tavsiye edilen sözdizimi.


39

Gönderen Wiki sayfası : "Ne [1,6] daktilo yenilikler":

Yeni .tsxdosya uzantısı ve asoperatörü

TypeScript 1.6 yeni bir .tsxdosya uzantısı sunar. Bu uzantı iki şey yapar: TypeScript dosyalarının içinde JSX'i etkinleştirir ve yeni asişleci yayın için varsayılan yöntem yapar (JSX ifadeleri ile TypeScript önek döküm operatörü arasındaki belirsizlikleri giderir). Örneğin:

var x = <any> foo; 
// is equivalent to:
var x = foo as any;
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.