Typescript 如何使用属性的类型作为声明的类型?

Typescript 如何使用属性的类型作为声明的类型?,typescript,Typescript,鉴于此简化代码: 类查找器{ hasprop:字符串,值{ 返回此[prop].indexOfvalue>=0; } } Str类型=字符串; 类型Num=数字; A类扩展查找器{ 字符串:Str[]; 构造器{ 超级的 this.string=chars; } } B类扩展查找器{ 数字:Num[]; 构造函数…整数{ 超级的 这个数字=整数; } } 常数a=新的a'a',b',c'; a、 有'string','a';//好啊 常数b=新的B1、2、3; b、 有'number','1';

鉴于此简化代码:

类查找器{ hasprop:字符串,值{ 返回此[prop].indexOfvalue>=0; } } Str类型=字符串; 类型Num=数字; A类扩展查找器{ 字符串:Str[]; 构造器{ 超级的 this.string=chars; } } B类扩展查找器{ 数字:Num[]; 构造函数…整数{ 超级的 这个数字=整数; } } 常数a=新的a'a',b',c'; a、 有'string','a';//好啊 常数b=新的B1、2、3; b、 有'number','1';//应该编译错误 在.has方法中,如何将值的类型声明为动态[prop]的类型

我可以将其声明为Str | Num,但类查找器预计会被许多其他类似于A和B的类扩展,每个类都有不同的自定义类型。所以实际上,我不能这么做。

使用模板:

class Finder<T> {
    has(prop: string, value: T) {
        return this[prop].indexOf(value) >= 0;
    }
}

class A extends Finder<string> {
    string: string[];

    constructor(...chars: string[]) {
        super();

        this.string = chars;
    }
}

class B extends Finder<number> {
    numbers: number[];

    constructor(...ints: number[]) {
        super();

        this.numbers = ints;
    }
}