如何将字符串转换为字符串属性

时间:2017-06-03 19:27:34

标签: javascript typescript

我正在尝试使用Typescript编写一个函数,该函数带有2个参数,其中第二个参数始终是string类型。该函数应该将第一个参数的第二个参数应用为其属性

示例:

let x = measure('Hello', 'length'); // should return 'Hello'.length
// => x = 5

如何将字符串'length'转换为'Hello'的属性以返回'Hello'.length?

1 个答案:

答案 0 :(得分:3)

如果我理解你:

function measure(obj: any, property: string): any {
    return obj[property];
}

let x = measure('Hello', 'length');
console.log(x); // 5

code in playground

修改

甚至更好:

function measure<T, K extends keyof T>(obj: T, property: K): T[K] {
    return obj[property];
}

在此版本中,编译器可以推断返回值的类型,并且还将强制仅使用现有属性名称,例如:

let x = measure('Hello', 'lengthy'); // error