使用其名称获取Terntypes
Tl; dr版本 :
使用TernJS
进行自动完成的目的,我想在函数上使用一个规则,将一个string作为参数,以便返回一个名称与给定参数相同的types,例如:
foo("TypeA") returns +TypeA foo("TypeB") returns +TypeB
简而言之,我在寻找是否在Tern中有一个符号可以用你的名字给你一个types。
长版本:
结合使用CodeMirror
与TernJS
设置的TernJS
,我试图模拟一个自定义的工厂行为,并在ES6中的JavaScript中提供类似的function:
//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);
我创build一个类的实例:
var classAInst = factory.createInstance("ClassA");
我想在编辑器中能够获得ClassA
实例的方法。
classAInst.<AutoCompletion-KeyStroke> //This should give the completion list containing `foo`.
现在,我知道为了得到这个,我需要在中生成TernJS推理机规则。 json
定义,所以对于ClassA和工厂我有这样的东西:
{ "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>" } } } } }
问题是,我想通过检查TernJS回购库中的ecma6.json文件来形成规则,因为我找不到推理引擎的任何文档。
我试图做这样的事情,试图告诉引擎以某种方式索引types,但它不起作用(我认为[]
仅用于数组定义):
"createInstance": { "!type": "fn(name: string) -> Test[!0]" }
所以,任何帮助,将不胜感激。 任何链接或推理引擎手册的参考也将非常有用,因为我没有设法find这样的信息。