我正在寻找一种使Typescript根据函数参数猜测函数的返回类型的方法。
function fn<T extends object>(a: T, b: T, property: keyof T): any {
return a[property] ?? b[property];
}
我想删除any
以获得正确的返回类型。
interface A {
foo?: string;
}
const a: A = { foo : 'bar' };
const b: A = {};
const a = xor(a, b, 'foo'); // it should get the string type from inference
我像这样ReturnType<T>
来使用ReturnType<typeof T[property]>
,但Typescript似乎不支持它。我不知道这是否可行?
答案 0 :(得分:2)
为属性名称添加另一个类型参数:
function fn<T, K extends keyof T>(a: T, b: T, property: K): T[K] {
return a[property] ?? b[property];
}
请注意,它将推断string | undefined
,而不是string
,因为接口foo
的{{1}}属性是可选的,因此A
和a
没有。