[英]keyof for static properties of TypeScript classes
Given this code sample in TypeScript playground , I am not able to type properly the greeterBuilderName
variable so that it can be passed to getProp utility... keyof Greeter
is actually the list of props/methods on instances of Greeter, how can I specify that I want props of the Greeter func itself ( prototype
, warm_greeter
, ... ) ? 在TypeScript playground中给出了这个代码示例 ,我无法正确键入
greeterBuilderName
变量,以便可以将其传递给getProp实用程序... keyof Greeter
实际上是Greeter 实例上的props /方法列表,我该如何指定我想要Greeter func本身的道具( prototype
, warm_greeter
,......)?
In other words, what is the proper type for greeterBuilderName
? 换句话说,
greeterBuilderName
的正确类型是greeterBuilderName
?
Thanks ! 谢谢 !
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());
我想你想获得Greeter类本身的键,所以
const greeterBuilderName: keyof typeof Greeter = 'warm_greeter';
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.