我正在为 existing Javascript library 编写 Typescript 定义文件. 在这个库中有一些函数可以被称为构造函数或工厂。 如何以兼容的方式编写类型?
这里是调用 need to be supported according to the README 的具体示例:
var streamParser = N3.StreamParser();
var streamParser = new N3.StreamParser();
我目前的做法是只支持工厂。
function Parser(options?: ParserOptions): N3Parser;
让 new
工作的明显方法是创建一个类。
class Parser {
constructor(options ? : ParserOptions);
}
但这两种方法是不兼容的。 declartion-file deep-dive的开篇表示这是可能的,但没有给出示例。
注意: 以下两个定义是兼容的,但是......那么,什么?
interface Parser {
new: (options ? : ParserOptions) => N3Parser;
}
function Parser(options ? : ParserOptions): N3Parser;
最佳答案
您可以按照在 lib.d.ts 中完成的相同操作进行操作与 Array和 ArrayConstructor :
interface Parser {}
interface ParserConstructor {
new (options?: ParserOptions): Parser;
(options?: ParserOptions): Parser;
}
declare const Parser: ParserConstructor;
let p1 = Parser();
let p2 = new Parser();
关于javascript - 如何定义同名的 Typescript 构造函数和工厂函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40158295/