首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >基于参数的Typescript推断

基于参数的Typescript推断
EN

Stack Overflow用户
提问于 2019-12-23 23:29:59
回答 1查看 53关注 0票数 1

我正在寻找一种方法,让Typescript根据函数参数来猜测函数的返回类型。

代码语言:javascript
运行
复制
function fn<T extends object>(a: T, b: T, property: keyof T): any {
  return a[property] ?? b[property];
}

我想删除any以获得正确的返回类型。

代码语言:javascript
运行
复制
interface A {
  foo?: string;
}

const a: A = { foo : 'bar' };
const b: A = {};
const a = fn(a, b, 'foo'); // it should get the string type from inference

我像这样使用ReturnType<typeof T[property]>查看了ReturnType<T>,但Typescript似乎不支持它。我不知道这是否可行?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-12-23 23:36:08

为特性名称添加另一个类型参数:

代码语言:javascript
运行
复制
function fn<T, K extends keyof T>(a: T, b: T, property: K): T[K] {
  return a[property] ?? b[property];
}

请注意,它将推断string | undefined,而不是string,因为接口A上的foo属性是可选的,因此ab可能都没有该属性。

Playground Link

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

https://stackoverflow.com/questions/59457744

复制
相关文章

相似问题

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