【发布时间】:2019-10-06 05:29:39
【问题描述】:
我正在尝试使用函数参数来推断另一个函数参数的缩小泛型类型的键。如果我硬编码一个类类型来代替泛型,一切似乎都可以工作;但是,当使用通用值时,第二个参数的缩小不起作用。已经在这几天了,我迷路了。
困惑?我知道我是......这是说明问题的代码。在最后一个函数中,第二个参数应解析为有效属性。
class A {
readonly shortname = 'A';
id: number;
genStart: Date;
}
class B {
readonly shortname = 'B';
id: number;
genPart: Date;
}
class C {
readonly shortname = 'C';
id: number;
genEnd: Date;
}
type Entities = A | B | C;
type GetEtType<T extends Entities['shortname']>
= keyof Extract<Entities, { shortname: T }>;
class EtTester {
tester<TShortName extends Entities['shortname'],
TProp extends GetEtType<TShortName>>(shortName: TShortName,
propName: TProp) {
}
}
let et = new EtTester();
et.tester('B', 'genPart' )
任何帮助都会很棒。
【问题讨论】:
标签: typescript generics discriminated-union