首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在typescript中总是使用.tsx而不是.ts有什么缺点吗?

在typescript中总是使用.tsx而不是.ts有什么缺点吗?
EN

Stack Overflow用户
提问于 2015-12-11 20:50:39
回答 5查看 125.3K关注 0票数 189

我刚开始用TypeScript做一个React项目,并问自己应该如何处理常规的类文件?我应该使用.ts.tsx文件,然后我找不到任何理由不使用.tsx文件,即使它不是一个React项目!

有没有什么原因或特殊情况让我们不能使用.tsx文件?如果没有,为什么TypeScript团队要添加全新的扩展?

EN

Stack Overflow用户

发布于 2019-02-10 15:23:05

您可以使用tsx而不是ts,差别很小。tsx显然允许在TypeScript中使用jsx标记,但这引入了一些解析歧义,这使得tsx略有不同。根据我的经验,这些差异并不是很大:

带有jsx <> 的类型断言不起作用,因为它是标记的标记。

TypeScript有两种用于类型断言的语法。它们都做了完全相同的事情,但是一个在tsx中是可用的,另一个是不可用的:

代码语言:javascript
运行
复制
let a: any;
let s = a as string // ok in tsx and ts
let s2 = <string>a // only valid in ts

为了保持一致性,我也会在ts文件中使用as而不是<>as实际上是在TypeScript中引入的,因为<>tsx中不可用。

不能正确解析没有约束的泛型箭头函数

下面的箭头函数在ts中是正常的,但在tsx中出现错误,因为<T>tsx中被解释为标签的开始

代码语言:javascript
运行
复制
 const fn = <T>(a: T) => a

您可以通过添加约束或不使用箭头函数来解决此问题:

代码语言:javascript
运行
复制
 const fn = <T extends any>(a: T) => a
 const fn = <T,>(a: T) => a // this also works but looks weird IMO
 const fn = function<T>(a: T) { return a;}

便笺

虽然您可以使用tsx而不是ts,但我建议您不要使用它。约定是一个强大的东西,人们将tsxjsx联系在一起,并可能会对你没有任何jsx标签感到惊讶,最好让开发人员的惊讶降到最低。

虽然上面的歧义不大(尽管可能不是完整的列表),但它们可能在决定为新语法使用专用文件扩展名以保持ts文件向后兼容方面发挥了很大作用。

票数 251
EN
查看全部 5 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34224007

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档