2

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.jsonTernJS 存储库中的文件来形成规则,因为我无法找到推理引擎的任何文档。

我尝试做这样的事情,试图告诉引擎以某种方式索引类型,但它不起作用(我想这[]仅用于数组定义):

 "createInstance": {
   "!type": "fn(name: string) -> Test[!0]"
 }

因此,对此的任何帮助将不胜感激。推理引擎手册的任何链接或参考也将非常有帮助,因为我没有设法找到此类信息。

4

0 回答 0