首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Typescript泛型返回类型问题

Typescript泛型返回类型问题
EN

Stack Overflow用户
提问于 2020-12-14 12:12:43
回答 2查看 75关注 0票数 7

我在我的项目中使用了typescript泛型,但它似乎工作得不太好。

示例:

代码语言:javascript
运行
复制
interface Test<T, P> {
  a?: (v: T) => P
  b?: (v: P) => void
}

const fn1 = <T, P>(_config: Test<T, P>) => {}

fn1({
  a: (p) => 1,
  b: (p) => {},
})

我认为params 'a'类型就像:

Test<unknown, number>.a?: ((v: unknown) => number) | undefined

但是,实际上:

Test<unknown, unknown>.a?: ((v: unknown) => unknown) | undefined

我不知道为什么,有人能帮我吗?谢谢。

EN

回答 2

Stack Overflow用户

发布于 2020-12-14 14:15:29

因为您没有在下面一行上定义类型:b: (p) => {}

那么TS就不能推断P的类型,即使您在上面的a定义中返回了它。

票数 0
EN

Stack Overflow用户

发布于 2021-09-29 05:35:13

这是因为在一个联合体中,一个未知者吸收了一切。

对于(a)中的P,TypeScript推断出一种类型的“数字”,但是对于(b)中的P,它推断出一种“未知”类型,就像它对(a)中的T所做的那样。

因此,P的结果是"number | unknown“(而不是您预期的"number | undefined”),它只产生"unknown“。

如果您参考TypeScript文档here,您将发现:

//在联合中,unknown吸收所有类型P= unknown | number;// unknown

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65283496

复制
相关文章

相似问题

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