给定一个接口:
interface IAnInterface {
}
Run Code Online (Sandbox Code Playgroud)
如何引用并指向实现该接口的类类型?
含义,给定一个类:
class AClassThatImplmentsAnInterface implements IAnInterface {
}
Run Code Online (Sandbox Code Playgroud)
如何引用属于类类型的类型?如果只是类,我们可以使用typeof:
typeof AClassThatImplementsAnInterface
Run Code Online (Sandbox Code Playgroud)
但在接口级别,它指向所有实现该接口的类:
typeof IAnInterface
Run Code Online (Sandbox Code Playgroud)
给出错误:
'IAnInterface' only refers to a type, but is being used as a value here. (2693)
Run Code Online (Sandbox Code Playgroud)
我想做类似的事情:
type IClassTypeMapping = {
[names in SomeLiteralStringUnion]: Class<IAnInterface>
}
Run Code Online (Sandbox Code Playgroud)
当然ClassTypeScript 中不存在。如何引用 的等效项Class<IAnInterface>?在 TypeScript 中是否有可能?
Lin*_*ste 13
我假设您正在尝试映射到类本身,而不是映射到类的实例。所以基本上有的东西是可以构造的。我认为这种类型应该适合你:
type Class<I, Args extends any[] = any[]> = new(...args: Args) => I;
Run Code Online (Sandbox Code Playgroud)
我们声明Class<IAnInterface>可以使用new关键字和一些参数来调用它,并将返回一个IAnInterface对象(类实例)。
第二个参数Args允许您定义构造函数参数是什么。如果没有参数,它将是一个空数组。
declare const MyClass: Class<IAnInterface, []>;
const instance: IAnInterface = new MyClass();
Run Code Online (Sandbox Code Playgroud)
declare const OtherClass: Class<IAnInterface, [number, string]>;
const otherInstance: IAnInterface = new OtherClass(0, "");
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3344 次 |
| 最近记录: |