【问题标题】:Use ts for tsx react files将 ts 用于 tsx 反应文件
【发布时间】:2016-12-23 18:06:59
【问题描述】:

是否可以在没有 IDE 和编译器发疯的情况下对 React typescript .tsx 文件使用 .ts 扩展?

【问题讨论】:

  • 是的。文件扩展名可以在tsconfig 中配置。您可以明确列出文件或使用include 正则表达式。什么是 IDE?我所知道的所有 IDE 都允许您将它们配置为对任何文件类型使用任何语言。
  • 为什么要在.ts文件中写JSX?
  • 聚会迟到了。我的用例之一是将基于超脚本的代码重构为 JSX。我所有的文件都命名为 .view.ts 。如果我可以将所有 .view.ts 文件配置为 tsx 那就太好了。如果不重命名为 tsx 会丢失原始文件的所有历史记录,这会对我有所帮助。

标签: javascript reactjs typescript


【解决方案1】:

现在,没有。 .tsx 扩展存在的技术原因。

当涉及到 TypeScript 的原始类型断言语法时,JSX 引入了歧义 - 具体来说,不清楚 <Foo>xyz 是 JSX 标记的开始还是类型断言的开始。这就是为什么我们不得不采用as 类型断言语法(即xyz as Foo)并引入.tsx 文件扩展名。

除此之外,支持 JSX 意味着 TypeScript 必须决定如何消除诸如通用箭头函数之类的歧义。例如,在这种情况下

let identity = <T>(x: T) => x

TypeScript 将其解析为 JSX 标记的开头。用户必须将其转换为明确的形式才能获得等效代码:

let identity = <T extends {}>(x: T) => x

简而言之:支持 JSX 将意味着编译器中的重大更改或大量不必要的复杂性,并且 JSX 的错误恢复更差。

【讨论】:

  • 这个答案是2016年的,今天还是这样吗?
  • 是的,或者今天仍然如此,而且可能会无限期地如此。
【解决方案2】:

有了 Babel,你可以使用这个开关:

https://babeljs.io/docs/en/babel-preset-typescript#istsx

无论如何我们都应该使用新的类型断言语法...

【讨论】:

    猜你喜欢
    • 2018-06-24
    • 2019-10-26
    • 1970-01-01
    • 2023-01-10
    • 1970-01-01
    • 2020-01-30
    • 2021-05-25
    • 2020-05-06
    • 1970-01-01
    相关资源
    最近更新 更多