我有一个抽象类,称为Action:
abstract class Action { ... }
Run Code Online (Sandbox Code Playgroud)
我有几个扩展的类Action:
class Vote extends Action { ... }
class Upload extends Action { ... }
...
Run Code Online (Sandbox Code Playgroud)
我如何声明一个扩展的类数组Action(但不应该接受Action自己?
const actions: (typeof Action)[] = [
Vote, // OK (passes)
Upload, // OK (passes)
File, // OK (fails)
Action // BAD (passes)
]
Run Code Online (Sandbox Code Playgroud)
使用返回抽象类而不是抽象类的构造函数签名。抽象类在类型系统中没有构造函数,因此它将是无效的,但是任何继承该抽象类的派生类将是有效的。
abstract class Action { ... }
class Vote extends Action { ... }
class Upload extends Action { ... }
const actions: (new () => Action)[] = [
Vote, // OK (passes)
Upload, // OK (passes)
File, // OK (fails)
Action // Ok now (fails)
]
Run Code Online (Sandbox Code Playgroud)