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