【发布时间】:2016-02-03 20:08:21
【问题描述】:
TypeScript 规范所称的类型断言有什么区别:
var circle = <Circle> createShape("circle");
还有newer as 运算符:
var circle = createShape("circle") as Circle;
这两个通常用于编译时转换?
【问题讨论】:
标签: casting typescript
TypeScript 规范所称的类型断言有什么区别:
var circle = <Circle> createShape("circle");
还有newer as 运算符:
var circle = createShape("circle") as Circle;
这两个通常用于编译时转换?
【问题讨论】:
标签: casting typescript
不同之处在于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文件扩展名和as运算符TypeScript 1.6 引入了新的
.tsx文件扩展名。这个扩展 做了两件事:它在 TypeScript 文件中启用 JSX,并且它 使新的as运算符成为默认的投射方式(删除任何 JSX 表达式和 TypeScript 前缀转换之间的歧义 操作员)。例如:var x = <any> foo; // is equivalent to: var x = foo as any;
【讨论】:
var x = foo as any; var x: any = foo;