简体   繁体   English

typeof类的静态属性的keyof

[英]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本身的道具( prototypewarm_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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM