【发布时间】:2017-11-09 15:28:01
【问题描述】:
我尝试使用 Compiler API 来处理 JavaScript 代码并使用类型推断来预测“object.property”PropertyAccessExpression 节点中的“对象”类型。 像第一个示例这样的简单示例效果很好,但是大多数示例都失败了,想知道这是故意使用 TypeScript 类型推断的方式,还是因为我没有编写正确的代码?谢谢!
var obj={prop: ''};
var h=obj;
h.prop = ''; //works! 'h' show as 'obj' type
function fx(arg) {return arg;}
var i=fx(obj);
i.prop = ''; //failed! type of 'i' show 'any', it should be 'obj'
以下是使用检查器打印推断类型的源代码:
var ts = require('typescript');
function visit(node) {
ts.forEachChild(node, visit);
console.log( checker.getSymbolAtLocation(node.name));
}
var program = ts.createProgram([process.argv[2]], {lib: ['DOM'], allowJs: true, target: ts.ScriptTarget.ES5, module: ts.ModuleKind.None});
var checker = program.getTypeChecker();
ts.forEachChild(program.getSourceFiles()[0], visit);
【问题讨论】:
标签: javascript typescript type-inference