【发布时间】:2020-01-23 06:19:16
【问题描述】:
这两个函数定义有什么区别?
使用第一个getProperty,TypeScript 可以推断出 return 类型。但是第二个失败了。
function getProperty<T, K extends keyof T>(obj: T, key: K) {
return obj[key];
}
function getProperty2<T>(obj: T, key: keyof T) {
return obj[key];
}
let obj = {
a: 1,
name: 'test',
}
const name2 = getProperty(obj, 'name');
name2.length; // This is OK, name2 is infered as string
const name3 = getProperty2(obj, 'name');
name3.length; // This is ERROR! name3 is of type string | number
【问题讨论】:
标签: typescript typescript-generics