我已經包裹contructors以下高階函數:如何記錄JavaScript高階函數?
/**
* Wrapper for calling constructor with given parameters
*
* @param {Class} Cls
* @returns {function} Wrapper on constructor which creates an instance of given Class
*/
function constructorWrapper(Cls) {
return (...args) => new Cls(...args);
}
所以,如果我有一個類MyClass
,我可以做到以下幾點:
exports.MyClass = MyClass;
exports.myClass = constructorWrapper(MyClass);
現在的類可以在下面的實例2種方式導入後:
const instance1 = new MyClass(param1, param2);
const instance2 = myClass(param1, param2);
在vscode中,instance1
將具有智能感應支持,但instance2
不會。如何記錄函數/導出,以便使用包裝器創建的對象被識別爲類的實例?
JavaScript有時並不真正記錄在'vscode'上,使用Typescript代替:( – Chris