在TypeScript中,类是否可以成为函数实例的构造函数?我想象的是:
class SomeThing {
(name: string) {
// do something with name
}
}
let thing = new SomeThing();
thing('John Doe');
答案 0 :(得分:4)
技术上可行(这需要一些黑客,我不打算在这里写)但你真的不想这样做;这就是为什么。
new
运算符创建一个新的对象(非函数),其__proto__
是操作数的prototype
。这意味着你不可能有new
运算符返回的可调用事物,除非你明确地从构造函数中返回其他东西。
但是如果你从构造函数中返回其他内容,那么thing instanceof SomeThing
将是false
,并且你将无法使用prototype
方法来自thing
的班级。所以在这一点上,它根本不像class
那样,你最好只拥有一个工厂功能,它可以做任何想做的事情。