【发布时间】:2021-03-12 06:27:29
【问题描述】:
我正在尝试在 TypeScript 中使用 mixin 类。但是 mixin 应用程序的返回值(以下代码中的 Sizeable.mixin()) 是“不是构造函数”,尽管正如您在错误输出中清楚地看到的那样,其类型的第一部分是 new (...args: any[]):,所以有人会认为它是一个构造函数:
知道为什么Parent(它显然是一个构造函数,因为它的类型中有{ new (...args: any[]): 部分)不允许被类扩展吗?
【问题讨论】:
-
您能否尝试将代码从屏幕截图和问题中移出,并更彻底地解释代码的作用和问题所在?乍一看,虽然我并不完全理解它,但我可以看到
Parent实际上不是构造函数,它只包含一个构造函数。 -
@apokryfos 它是如何包含构造函数的?那个语法不就是可构造的接口语法吗,也就是说接口类型是构造函数。例如:
interface Ctor { new(arg: string): Ctor }。这不是表示可构造的类型吗? -
一个可构造的是。但是constructible包含一个构造函数。构造函数本身类似于
type Constructor<T = {}> = new (...args: any[]) => T; -
我们需要
Sizeable.mixin的代码,或者至少需要有类型的声明。
标签: typescript