TS错误:“找不到名称'T'如何通过泛型?

Posted

技术标签:

【中文标题】TS错误:“找不到名称\'T\'如何通过泛型?【英文标题】:TS error: "Cannot find name 'T' how to pass the generic?TS错误:“找不到名称'T'如何通过泛型? 【发布时间】:2020-06-12 13:17:08 【问题描述】:

我在我的项目中使用https://www.npmjs.com/package/recompose

我需要将一个通用的“T”传递给Table,如何更改类型签名以便满足compose<Props<T>, CompProps<T>>

我试过没有成功:

export const Table<T> = ...

export const Table = compose<Props<T>, CompProps<T>>(
  setDisplayName('Grid'),
  injectSheet(styles)
)(TableComp);

我收到的错误是:

"Cannot find name 'T'

【问题讨论】:

T 应该是什么?您的代码中没有类型 T 您必须创建type Table&lt;T&gt; = ... 并声明变量如export const Table: T = ... 【参考方案1】:

由于您没有类型,请使用any:

export const Table = compose<Props<any>, CompProps<any>>(
  setDisplayName('Grid'),
  injectSheet(styles)
)(TableComp);

编辑:可以保持类型安全

export const Table<T> = compose<Props<T>, CompProps<T>>(
  setDisplayName('Grid'),
  injectSheet(styles)
)(TableComp);

【讨论】:

我以这种方式失去了类型安全

以上是关于TS错误:“找不到名称'T'如何通过泛型?的主要内容,如果未能解决你的问题,请参考以下文章

src/polyfills.ts(73,1) 中出现错误时的 web-pack 错误:错误 TS2304:找不到名称“全局”。 [ng] src/polyfills.ts(73,17):

打字稿错误 TS2345 错误:TS2345:“缓冲区”类型的参数不可分配给“字符串”类型的参数

无法解决 ts 错误:对象可能是“未定义”.ts(2532)

启动后为 Angular 6 项目获取“错误 TS1005,TS1109”

打字稿错误 TS1005: ';'预期(二)

错误:TS2345:使用打字稿编译时