TypeScript中非抽象类(非抽象构造函数)的类型签名如下:

declare type ConstructorFunction = new (...args: any[]) => any;

这也被称为newable型.但是,我需要abstract类(抽象构造函数)的类型签名.我知道它可以定义为Function型,但way型太宽了.难道没有更精确的替代方案吗?


Edit:

为了阐明我的意思,下面的小片段演示了抽象构造函数和非抽象构造函数之间的区别:

declare type ConstructorFunction = new (...args: any[]) => any;

abstract class Utilities {
    ...
}

var UtilityClass: ConstructorFunction = Utilities; // Error.

Type 'typeof Utilities' is not assignable to type 'new (...args: any[]) => any'.

无法将抽象构造函数类型分配给非抽象构造函数类型.

推荐答案

我自己也在努力解决类似的问题,这似乎对我有用:

type Constructor<T> = Function & { prototype: T }

Typescript相关问答推荐

类型ElementTypes不可分配给类型ElementTypes.word'

如何准确确定此特定场景中的类型?

Angular -使用Phone Directive将值粘贴到控件以格式化值时验证器不工作

如何在ts中使用函数重载推断参数类型

React-Native运行方法通过监听另一个状态来更新一个状态

Angular 17 -如何在for循环内创建一些加载?

如何推断类方法未知返回类型并在属性中使用它

为什么typescript要把这个空合并转换成三元?

路由链接不会导航到指定router-outlet 的延迟加载模块

通配符路径与每条路径一起显示

为什么我的条件类型不能像我预期的那样工作?

Angular 15使用react 式表单在数组内部创建动态表单数组

在Reaction-Native-ReAnimated中不存在Animated.Value

我怎样才能正确地输入这个函数,使它在没有提供正确的参数时出错

Angular 16将独立组件作为对话框加载,而不进行布线或预加载

打印脚本中正则函数和函数表达式的不同类型缩小行为

TaskListProps[]类型不可分配给TaskListProps类型

TypeScrip:从嵌套的对象值创建新类型

将类型脚本函数返回类型提取到VSCode中的接口

如何使用 runInInjectionContext 中的参数测试功能性路由防护