我正在尝试使用Typescript编写一个函数,该函数带有2个参数,其中第二个参数始终是string类型。该函数应该将第一个参数的第二个参数应用为其属性
示例:
let x = measure('Hello', 'length'); // should return 'Hello'.length
// => x = 5
如何将字符串'length'转换为'Hello'的属性以返回'Hello'.length?
答案 0 :(得分:3)
如果我理解你:
function measure(obj: any, property: string): any {
return obj[property];
}
let x = measure('Hello', 'length');
console.log(x); // 5
甚至更好:
function measure<T, K extends keyof T>(obj: T, property: K): T[K] {
return obj[property];
}
在此版本中,编译器可以推断返回值的类型,并且还将强制仅使用现有属性名称,例如:
let x = measure('Hello', 'lengthy'); // error