0
JavaScript 코드를 처리하기 위해 컴파일러 API를 사용하고 Type 추론을 사용하여 'object.property'PropertyAccessExpression 노드에서 'object'유형을 예측하려고합니다. 첫 번째 샘플 송풍과 같은 간단한 것들이 잘 작동했지만 대부분의 예제가 실패했습니다. 이것이 TypeScript 형식 추론을 사용하는 의도적 인 방법인지 또는 적절한 코드를 작성하지 않았기 때문에 궁금한 점이 있습니까? 고맙습니다! 함수가 any
그래서 i
유형 any
이다 리턴으로도자바에 대한 추론 지원
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);
아니요, 'i'는 'obj'여야합니다 ... ... 추론 엔진이 'fx()'return 문과 'fx (obj)'호출을 코드에서 분석하는 경우에만 .... BTW, 나는 합법적 인 정당한 JavaScript 코드를 처리하고 있으므로 코드를 입력 소스에 맞게 변경할 수 있습니다. 다른 방법으로는 사용할 수 없습니다. –
함수를 일반적인 것으로 만들려고 했습니까? 어떤 타입을 얻었습니까? – zgue
죄송합니다. 제안한대로 제네릭 함수로 변경할 수 없습니다. 1) 유효한 JavaScript 입력을 사용하여 유형을 추론하고 응답의 일반 함수 코드가 유효한 자바 스크립트 구문이 아닙니다. 2) 유효한 Javascript 코드를 제외하고는 어떤 입력을 받는지 제어 할 수 없습니다. –