TypeScript 规范所称的类型断言有什么区别:
var circle = <Circle> createShape("circle");
newer 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
。这是 recommended 语法。
来自 Wiki page:“TypeScript [1.6] 中的新增功能”:
新的 .tsx 文件扩展名和作为运算符的 TypeScript 1.6 引入了新的 .tsx 文件扩展名。这个扩展做了两件事:它在 TypeScript 文件中启用 JSX,并且它使 new as 运算符成为默认的强制转换方式(消除 JSX 表达式和 TypeScript 前缀强制转换运算符之间的任何歧义)。例如: var x =
var x = foo as any; var x: any = foo;