【发布时间】:2018-10-27 19:38:31
【问题描述】:
这是一些示例代码,我无法弄清楚它为什么会引发错误。 任何相同的帮助将不胜感激。 我试图在 getClass 函数中创建一个类实例,但打字稿抛出了一些错误。 代码在 javascript 中运行,但我无法找到修复打字稿错误的方法。
它是说“类型'typeof Ab'不能分配给类型'Ab'。 “typeof Ab”类型中缺少属性“b”。
class A {
public a: string
constructor(args: Partial<A>) {
this.a = args.a;
}
};
class Ab extends A {
public b: string
constructor(args: Partial<Ab>) {
super(args);
this.b = args.b;
}
};
class Ac extends A {
public c: string
constructor(args: Partial<Ac>) {
super(args);
this.c = args.c;
}
};
const enumMap = {
ab: 1 as 1,
ac: 2 as 2,
};
type enumMap = typeof enumMap[keyof typeof enumMap];
type enumClass<T extends enumMap> =
T extends typeof enumMap.ab ? Ab :
T extends typeof enumMap.ac ? Ac : never;
const enumClassMap: { [K in enumMap]: enumClass<K> } = {
[enumMap.ab]: Ab, //Error
[enumMap.ac]: Ac, //Error
}
function getClass<T extends enumMap>(type: T) {
let abc: { new(): enumClass<T> } = enumClassMap[type];
return new abc({});
};
getClass(enumMap.ac);
【问题讨论】:
标签: typescript typescript-typings