ChatGPT解决这个技术问题 Extra ChatGPT

类型断言和 TypeScript 中较新的 `as` 运算符之间有什么区别?

TypeScript 规范所称的类型断言有什么区别:

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

newer as 运算符:

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

这两者通常用于编译时转换?


D
David Sherret

不同之处在于 as Circle 在 TSX 文件中有效,但 <Circle> 与 JSX 语法冲突。出于这个原因引入了 as

例如,.tsx 文件中的以下代码:

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

将导致以下错误:

错误 TS17002:“Circle”需要对应的 JSX 结束标记。

但是,as Circle 可以正常工作。

从现在开始使用 as Circle。这是 recommended 语法。


M
MartyIX

来自 Wiki page:“TypeScript [1.6] 中的新增功能”:

新的 .tsx 文件扩展名和作为运算符的 TypeScript 1.6 引入了新的 .tsx 文件扩展名。这个扩展做了两件事:它在 TypeScript 文件中启用 JSX,并且它使 new as 运算符成为默认的强制转换方式(消除 JSX 表达式和 TypeScript 前缀强制转换运算符之间的任何歧义)。例如: var x = foo; // 相当于: var x = foo as any;


这两个有什么不同吗? var x = foo as any; var x: any = foo;
@yusunglee 更好地回答您的问题:stackoverflow.com/questions/69220403/…