TypeScript:是否可以定义一个创建函数实例的类?

时间:2016-08-25 20:55:44

标签: typescript

在TypeScript中,类是否可以成为函数实例的构造函数?我想象的是:

class SomeThing {
    (name: string) {
       // do something with name
    }
}

let thing = new SomeThing();
thing('John Doe');

1 个答案:

答案 0 :(得分:4)

技术上可行(这需要一些黑客,我不打算在这里写)但你真的不想这样做;这就是为什么。

new运算符创建一个新的对象(非函数),其__proto__是操作数的prototype。这意味着你不可能有new运算符返回的可调用事物,除非你明确地从构造函数中返回其他东西。

但是如果你从构造函数中返回其他内容,那么thing instanceof SomeThing将是false,并且你将无法使用prototype方法来自thing的班级。所以在这一点上,它根本不像class那样,你最好只拥有一个工厂功能,它可以做任何想做的事情。