我一直在努力将Basarat Ali Syed优秀打字稿编辑项目的 a fork 升级到Typescript 1.0 RTM。
开箱即用的项目没有问题,但它使用的是旧版本的打字稿,编译器api从那时起已经发生了很大的变化。
为了更新项目,我删除了新的typescript位(lib.d.ts和typescriptServices.js)并设置了修复因api更改而被破坏的内容。
我正处于事物编译和编译错误在ace编辑器上浮现的地步但我无法弄清楚为什么不再识别诸如document,alert,window,setTimeout等全局变量:
我必须有一些简单的东西,它是如此接近工作。有人有什么想法吗?
谢谢!
答案 0 :(得分:3)
在这里看了一下代码:https://typescript.codeplex.com/SourceControl/latest#src/compiler/tsc.ts
编译时将lib.d.ts添加到编译器的文件列表中,就像任何其他文件一样:
resolve():
if (includeDefaultLibrary) {
var libraryResolvedFile: IResolvedFile = {
path: this.getDefaultLibraryFilePath(),
referencedFiles: [],
importedFiles: []
};
// Prepend the library to the resolved list
resolvedFiles = [libraryResolvedFile].concat(resolvedFiles);
}
compile():
this.resolvedFiles.forEach(resolvedFile => {
var sourceFile = this.getSourceFile(resolvedFile.path);
compiler.addFile(resolvedFile.path, sourceFile.scriptSnapshot, sourceFile.byteOrderMark, /*version:*/ 0, /*isOpen:*/ false, resolvedFile.referencedFiles);
});
一旦我开始做同样的事情,编译错误就消失了。必须在旧版本的编译器中不需要这一步吗?
答案 1 :(得分:0)
谢谢Jeremy,自从我看了之后已经很久了
这些知识应来自lib.d.ts
确保您在此处加载:https://github.com/basarat/TypeScriptEditor/blob/f8071ebaa2c1f84646fbd1907c28f3c58a643c42/scripts/lib/ace/mode/typescript/lightHarness.js#L83并在此处:https://github.com/basarat/TypeScriptEditor/blob/f8071ebaa2c1f84646fbd1907c28f3c58a643c42/scripts/main.js#L33-L35