Tl;博士版本:
用于自动完成目的,我想在函数上使用TernJS
规则,将字符串作为参数,以便返回名称与给定参数相同的类型,例如:
foo("TypeA") returns +TypeA
foo("TypeB") returns +TypeB
简而言之,我正在搜索 Tern 中是否存在可以使用其名称为您提供类型的符号。
长版:
CodeMirror
结合 setup in 使用TernJS
,我NodeJS
试图模拟自定义工厂行为并在 ES6 中的 JavaScript 中提供类似的功能:
//Module: Test.js
module.exports = (function() {
var test = {};
//....
test.classA = class ClassA {
constructor() {
//....
},
foo() {}
//....
}
test.factoryClass = class Factory {
constructor() {
//....
}
register(name, classData) {
//....
}
createInstance(name) {
//....
}
}
return test;
})();
现在,我想做的是:如果我通过以下方式注册了 ClassA:
var test = require("Test");
var factory = new test.factoryClass();
factory.register("ClassA", classA);
我创建了它的一个类实例:
var classAInst = factory.createInstance("ClassA");
我希望在编辑器中能够获取ClassA
实例的方法。
classAInst.<AutoCompletion-KeyStroke> //This should give the completion list containing `foo`.
现在,我知道为了得到这个,我需要在 . json
定义,所以对于 ClassA 和 Factory 我有类似的东西:
{
"Test" : {
"ClassA": {
"!type": "fn()"
"prototype": {
"foo": {
"!type": "fn() -> string"
}
}
}
//....
"Factory": {
"prototype": {
"register": {
"!type": "fn(className: string, classDefinition: object)"
},
"createInstance": {
"!type": "<This is what I need to specify properly>"
}
}
}
}
}
问题是我想出了如何通过检查ecma6.json
TernJS 存储库中的文件来形成规则,因为我无法找到推理引擎的任何文档。
我尝试做这样的事情,试图告诉引擎以某种方式索引类型,但它不起作用(我想这[]
仅用于数组定义):
"createInstance": {
"!type": "fn(name: string) -> Test[!0]"
}
因此,对此的任何帮助将不胜感激。推理引擎手册的任何链接或参考也将非常有帮助,因为我没有设法找到此类信息。