1
鉴于this code sample in TypeScript playground的静态属性,我不能够正确地键入greeterBuilderName
变量,以便它可以传递给getProp实用... keyof Greeter
其实是道具/方法上实例迎宾的名单,我怎么能指定我想要Greeter func本身的道具(prototype
,warm_greeter
,...)?keyof为打字稿类
换句话说,greeterBuilderName
的适当类型是什么?
谢谢!
function getProp<T, K extends keyof T>(object: T, property: K): T[K] {
return object[property];
}
class Greeter {
private greeting: string;
public constructor(message: string) {
this.greeting = message;
}
public greet(): string {
return "Hello, " + this.greeting;
}
public static warm_greeter(): Greeter { return new Greeter('good o\' fellow'); }
}
let greeterBuilder:() => Greeter = getProp(Greeter, 'warm_greeter'); // ok
alert(greeterBuilder().greet()); // ok
const greeterBuilderName: keyof Greeter = 'warm_greeter'; // does not build :(
greeterBuilder = getProp(Greeter, greeterBuilderName); // does not build :(
alert(greeterBuilder().greet());
谢谢!有用。你救了我几个小时:) – halogenr