我有以下对象:
export const PageConstructors: {[index: string]: any} = {
[PageName.MAIN] : MainPage,
[PageName.SCOREBOARD] : ScoreboardPage,
};
MainPage和ScoreboardPage都是Page的子级。我想用正确的类型替换any
。但是,我为找到正确的打字稿语法感到困惑。我尝试了new<T extends Page>() => T
的各种组合,但没有碰到运气。这可能吗?
答案 0 :(得分:1)
构造函数本身不是通用的。您的构造函数签名可以返回基类。
class Parent {
constructor() {
}
}
class Child extends Parent {
constructor() {
super();
}
}
const constructors: { [index: string]: new () => Parent } = {
test: Child,
}
如果构造函数可以接受参数,则可以其余any
或unknown
const constructors: { [index: string]: new (...a:unknown[]) => Parent } = {
test: Child,
}