带有泛型的 Typescript 箭头函数的语法是不是发生了变化?
Posted
技术标签:
【中文标题】带有泛型的 Typescript 箭头函数的语法是不是发生了变化?【英文标题】:Did the syntax change for Typescript arrow functions with generics?带有泛型的 Typescript 箭头函数的语法是否发生了变化? 【发布时间】:2019-06-08 01:34:02 【问题描述】:如上一题What is the syntax for Typescript arrow functions with generics所述,前几天Typescript编译器不接受:
const foo = <T>(x: T) => x
解决方法是使用:
const foo = <T extends >(x: T) => x
然而,昨天我注意到,当我删除“extends ”以将该行带回上面的第一个 sn-p 时,编译器会接受它而不会出现任何错误。进一步测试表明该线路工作正常。
typescript 最近是否更改了此语法,因此具有泛型的箭头函数不再需要“扩展 ”?
如果是这样,这是什么时候发生的?
【问题讨论】:
你最近更新了 Typescript 吗?除非安装了不同的版本,否则它不能在本地更改。我安装了 3.2.2 和 2.9.2。后者为我抛出该错误,前者接受它。所以他们一定是在某个地方固定了 @Lex 确实意味着前者(即 3.2.2)在没有extends
的情况下接受,但后者不接受?
是的 3.2.2 接受它而没有 extends
不确定何时引入此更改
【参考方案1】:
您在.ts
文件中吗?
在 .tsx
文件中,TypeScript 决定将 <T>
解析为 JSX 开始标签;但是,在.ts
文件中,JSX 是不允许的,因此 TypeScript 可以很好地将其解析为类型参数。
【讨论】:
以上是关于带有泛型的 Typescript 箭头函数的语法是不是发生了变化?的主要内容,如果未能解决你的问题,请参考以下文章
带有泛型的 Typescript JSX - 参数隐式具有“任何”类型
如何在带有 React 的 Typescript/JSX 中使用带有箭头函数的泛型?