WebStorm类型与在IIFE定义类型检查
问题描述:
我经常定义一个类状数据/在JS型结构,如:WebStorm类型与在IIFE定义类型检查
/**
* @param {string} d
* @constructor
*/
function MyType(d) {
/**
* @param {string} a
* @param {string} [b]
*/
this.search = function (a, b) {};
}
我使用jsdoc记录我的类型和WebStorm/PhpStorm /的IntelliJ通常做了伟大的工作自动完成,并警告我,如果,如果我忘了功能ARG等...
但是,这并不工作这么好,当我定义IIFE里面我喜欢的类型,像这样
var MyType = (function() {
/**
* @param {string} d
* @constructor
*/
function MyType(d) {
/**
* @param {string} a
* @param {string} [b]
*/
this.search = function (a, b) {};
}
return MyType;
})();
问题是,当我忘记函数参数时,我不会得到正确的警告。例如,下面的代码应该会给我两条曲线/警告,让我知道我缺少参数。
var mt = new MyType();
mt.search();
如果我没有在IIFE中定义我的类型,但它无法完美工作,它完美地工作。我尝试了一些不同的东西,这些东西似乎有不同程度的成功,但都没有完美。
如果我做
var MyType = (function() {
...
return MyType;
})();
var mt = new MyType();
mt.search();
...问题是我没有得到警告缺少构造阿根廷,虽然它不正确地警告我失踪search()
ARG。另外,按Ctrl +点击 MyType带我到var MyType
线,理想情况下,它应该带我到原函数定义。
如果我做
/** @var {MyType} window.MyType */
window.MyType = (function() {
...
return MyType;
})();
var mt = new MyType();
mt.search();
...然后我得到有关失踪构造ARG适当的警告和按Ctrl +点击上MyType的正常工作,通过我没有得到有关失踪ARGS警告在.search()
调用,和Ctrl +单击在搜索上无法正常工作。
当使用IIFE时,有没有办法让这项工作更好?理想情况下,我更喜欢一种不诉诸于全局状态/定义的方法。