TypeScript:是否可以定义一个创建函数实例的类?
在 TypeScript 中,类有可能成为函数实例的构造函数吗?我设想的是这样的情况:
class SomeThing {
(name: string) {
// do something with name
}
}
let thing = new SomeThing();
thing('John Doe');
答案#1
从技术上讲这是可能的(需要一些我在这里不会写的技巧),但你真的不想这样做;原因如下。
new 操作符创建一个新的 对象(不是函数),其 __proto__ 是操作数的 prototype。这意味着你不可能通过 new 操作符得到一个可调用的东西,除非你明确地从构造函数中返回其他东西。
但是如果你从构造函数中返回其他东西,那么 thing instanceof SomeThing 将会是 false,你也将无法从 thing 使用类的 prototype 方法。所以到那时,它实际上并不像一个 class,你最好直接使用一个工厂 函数,它可以随意做任何事情。