typescript 是否提供任何方法来获取以通用方式正确键入的可调用构造函数?
下面的代码有效,但有一些问题。似乎您不能通过声明类或接口来修改构造函数的返回类型。我试图玩弄一个mixin,但无法让它工作。
interface Callable<T> {
(): T;
(value:T): this;
}
declare class O<T> {
constructor(value:T);
}
function O<T>(value:T) : Callable<T> {
let _value = value;
// can we get rid of this cast ?
const callable = <Callable<T>> function(value?:T){
if(value === undefined){
return _value;
}
_value = value;
return callable;
};
Object.setPrototypeOf(callable, O.prototype);
return callable;
}
// can we get rid of this cast and/or make it generic ?
const instance = new O(false) as Callable<boolean>;
const a = instance(); // false
instance(true);
const b = instance(); // true
const c = instance instanceof O; // true
很确定还有其他改进可以随时发表评论