TypeScript官方文档中关于Constructorsignature只有这么一小段:JavaScript函数也可以用new运算符调用。TypeScript将它们称为构造函数,因为它们通常会创建一个新对象。您可以通过在调用签名前添加new关键字来编写构造签名:也可以使用new运算符调用JavaScript函数。TypeScript调用这些构造函数,因为它们通常会创建一个新对象。您可以通过在调用签名之前添加new关键字来编写构造函数签名:typeSomeConstructor={new(s:string):SomeObject;};functionfn(ctor:SomeConstructor){returnnewctor("hello");}但是这个例子还是把我搞糊涂了,于是摸索着写了一个例子:构造函数(分数:数字){this.score=score;}}functiondemo(ctor:SomeConstructor,number:number){returnnewctor(number);}console.log('Ethan:',demo(MyConstructor,100));console.log('Ethan:',demo(MyConstructor,200));以下代码使用构造函数签名定义了一个新的函数类型:接收到的输入是数字,输出是自定义类型Jerry。IfRemovenew,也就是我们已经熟悉的调用签名语法。classMyConstructor实现了Jerry类型:MyConstructor可以看作是SomeConstructor的具体实现。这样,凡是需要给SomeConstructor传入参数的地方,我把MyConstructor传进去,就可以了。这里的demo相当于一个工厂函数。我们可以看到,虽然应用代码中没有显式使用new关键字,但最终还是得到了两个不同的实例:Jerry更多原创文章在这里:《汪子熙》:
