casting - son - ¿Hay alguna diferencia entre las aserciones de tipo y el nuevo operador `as` en TypeScript?
que es una aseveracion negativa en auditoria (2)
Desde la newer : "Novedades en TypeScript [1.6]":
Nueva extensión de archivo
.tsx
yas
operadorTypeScript 1.6 presenta una nueva extensión de archivo
.tsx
. Esta extensión hace dos cosas: habilita JSX dentro de los archivos TypeScript, y hace que el nuevo operador sea la forma predeterminada de emitir (eliminando cualquier ambigüedad entre las expresiones JSX y el operador de conversión de prefijo TypeScript). Por ejemplo:
var x = <any> foo; // is equivalent to: var x = foo as any;
¿Hay alguna diferencia entre lo que la especificación TypeScript llama una aserción de tipo:
var circle = <Circle> createShape("circle");
Y el
newer
as
operador:
var circle = createShape("circle") as Circle;
¿Ambos se usan típicamente para el casting en tiempo de compilación?
La diferencia es que
as Circle
funciona en archivos TSX, pero
<Circle>
entra en conflicto con la sintaxis JSX.
as
se introdujo por este motivo.
Por ejemplo, el siguiente código en un archivo
.tsx
:
var circle = <Circle> createShape("circle");
Resultará en el siguiente error:
error TS17002: Se esperaba la etiqueta de cierre JSX correspondiente para ''Circle''.
Sin embargo,
as Circle
funcionará bien.
Úselo
as Circle
de ahora en adelante.
Es la sintaxis
newer
.