我正在尝试创建一个返回类的函数,但是我找不到应该的类型定义,因此我创建了一个示例 对于接口IOtherFactory中的TestItem,我已经尝试过
TestItem: ISomeClass<string>;
TestItem: ReturnType<typeof moduleSomeFactory>;
TestItem: { new <T extends ISomeClass<string>>(): T };
还有其他一些变化。如果我将SomeThing<string>
更改为SomeThing<any>
,则可以使用,但是在实际代码中是不可接受的
这是我的代码
export interface ISomeClass<T> {
t: T;
}
export function moduleSomeFactory() {
return class SomeClass<T> implements ISomeClass<T> {
t: T;
constructor(t: T) {
this.t = t;
}
};
}
interface IOtherFactory {
TestItem: ISomeClass<string>;
}
export function someOtherFactory(): IOtherFactory {
const SomeThing = moduleSomeFactory();
class TestItem extends SomeThing<string> {}
return {
TestItem,
};
}
答案 0 :(得分:1)
要解决类型错误,您可以指定一个构造函数签名,该签名将返回ISomeClass<string>
export interface ISomeClass<T> {
t: T;
}
export function moduleSomeFactory() {
return class SomeClass<T> implements ISomeClass<T> {
t: T;
constructor(t: T) {
this.t = t;
}
};
}
interface IOtherFactory {
TestItem: new (s: string) => ISomeClass<string>;
}
export function someOtherFactory(): IOtherFactory {
const SomeThing = moduleSomeFactory();
class TestItem extends SomeThing<string> { }
return {
TestItem,
};
}