[英]TypeScript type definitions: how to declare class constructors
我有一个自制的 JavaScript 库(一个 js 文件),其中包含许多类。 为了在我的 TypeScript 项目中使用它,我创建了一个 d.ts 文件,其中包含所有这些类的类型定义。 典型的定义如下所示:
export interface ClassExample {
new(param: boolean): ClassExample;
propertyName: number|string;
log(...args: any[]): void;
}
而且效果很好。 但是我被 linter 规则@typescript-eslint/no-misused-new
:“不能构造接口,只能构造类”。 当然,我可以配置我的 linter 和/或为特定的d.ts
文件添加例外,但这让我考虑是否应该有其他方法来描述我的类。 是否应该abstract class
声明? 我试图查找如何为公开可用的 Node.js 模块声明 class 构造函数,并在@types/node/console.d.ts
文件中找到此代码:
interface ConsoleConstructor {
prototype: Console;
new(stdout: WritableStream, stderr?: WritableStream, ignoreErrors?: boolean): Console;
new(options: ConsoleConstructorOptions): Console;
}
所以,我想,如果 Node.js 的作者在实践它,在接口中声明 class 构造函数并不是一个严重的罪过?
根据手册,您将使用declare
关键字声明 class ,如下所示:
declare class ClassExample {
constructor(param: boolean);
propertyName: number|string;
log(...args: any[]): void;
}
这是上面链接的部分,因为它在撰写此答案时出现(我的重点) :
课程
文档
您可以通过实例化
Greeter
greeter
创建一个欢迎程序,或者通过扩展它来创建一个自定义的greeter
程序。代码
const myGreeter = new Greeter("hello, world"); myGreeter.greeting = "howdy"; myGreeter.showGreeting(); class SpecialGreeter extends Greeter { constructor() { super("Very special greetings"); } }
宣言
使用
declare class
来描述class
或class
-like object。 类可以具有属性和方法以及constructor
。declare class Greeter { constructor(greeting: string); greeting: string; showGreeting(): void; }
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.