Javascript 如何定义同名的Typescript构造函数和工厂函数?
我正在为一个应用程序编写一个Typescript定义文件。 在这个库中,有一些函数可以被称为构造函数或工厂。 如何以兼容的方式书写打字 以下是一个具体的调用示例:Javascript 如何定义同名的Typescript构造函数和工厂函数?,javascript,typescript,Javascript,Typescript,我正在为一个应用程序编写一个Typescript定义文件。 在这个库中,有一些函数可以被称为构造函数或工厂。 如何以兼容的方式书写打字 以下是一个具体的调用示例: var streamParser=N3.streamParser(); var streamParser=new N3.streamParser(); 我目前的做法是只支持工厂 函数解析器(选项?:解析器选项):N3Parser; 让新的工作的明显方法是创建一个类 类解析器{ 构造函数(选项?:解析表达式); } 但这两种方法是
var streamParser=N3.streamParser();
var streamParser=new N3.streamParser();
我目前的做法是只支持工厂
函数解析器(选项?:解析器选项):N3Parser;
让新的工作的明显方法是创建一个类
类解析器{
构造函数(选项?:解析表达式);
}
但这两种方法是不相容的。
文章开头的段落表明这是可能的,但没有给出示例
注:
以下两个定义是兼容的,但。。。那么,什么
接口解析器{
新:(选项?:解析表达式)=>N3Parser;
}
函数解析器(选项?:解析器选项):N3Parser;
您可以按照与和中所做的相同操作进行操作:
()尼特赞·托默的回答恰到好处
对于我的特殊情况,构造的对象具有不同的接口,构造函数需要一些重载。
下面的示例显示了构造函数接口如何轻松支持这些需求
interface N3Parser { }
interface ParserOptions {[key: string]: string }
interface ParserConstructor {
new (options?: ParserOptions): N3Parser;
(options?: ParserOptions): N3Parser;
new (fd: any, options?: ParserOptions): N3Parser;
(fd: any, options?: ParserOptions): N3Parser;
}
declare const Parser: ParserConstructor;
let p1 = Parser();
let p2 = new Parser();
let p3 = Parser({ x: "y" });
let p4 = new Parser(3, { x: "y" });
interface N3Parser { }
interface ParserOptions {[key: string]: string }
interface ParserConstructor {
new (options?: ParserOptions): N3Parser;
(options?: ParserOptions): N3Parser;
new (fd: any, options?: ParserOptions): N3Parser;
(fd: any, options?: ParserOptions): N3Parser;
}
declare const Parser: ParserConstructor;
let p1 = Parser();
let p2 = new Parser();
let p3 = Parser({ x: "y" });
let p4 = new Parser(3, { x: "y" });