2

我一直在尝试将Basarat Ali Syed 出色的 typescript 编辑器项目的一个分支升级到 Typescript 1.0 RTM。

该项目开箱即用,没有问题,但是它使用了一年前的打字稿版本,并且编译器 api 从那时起发生了很大变化。

为了更新项目,我放入了新的 typescript 位(lib.d.ts 和 typescriptServices.js),并着手修复由于 api 更改而损坏的东西。

我正处于编译和编译错误出现在 ace 编辑器上的地步,但我无法弄清楚为什么不再识别文档、警报、窗口、setTimeout 等全局变量:

打字稿编译问题

我一定缺少一些简单的东西,它离工作太近了。有人有想法么?

谢谢!

4

2 回答 2

3

看看这里的代码: https ://typescript.codeplex.com/SourceControl/latest#src/compiler/tsc.ts

编译时将 lib.d.ts 添加到编译器的文件列表中,就像任何其他文件一样:

解决() :

        if (includeDefaultLibrary) {
            var libraryResolvedFile: IResolvedFile = {
                path: this.getDefaultLibraryFilePath(),
                referencedFiles: [],
                importedFiles: []
            };

            // Prepend the library to the resolved list
            resolvedFiles = [libraryResolvedFile].concat(resolvedFiles);
        }

编译():

        this.resolvedFiles.forEach(resolvedFile => {
            var sourceFile = this.getSourceFile(resolvedFile.path);
            compiler.addFile(resolvedFile.path, sourceFile.scriptSnapshot, sourceFile.byteOrderMark, /*version:*/ 0, /*isOpen:*/ false, resolvedFile.referencedFiles);
        });

一旦我开始做同样的事情,编译错误就消失了。在旧版本的编译器中一定不需要这一步吗?

于 2014-04-09T08:58:46.270 回答
0

Thanks Jeremy, been a long time since I looked at it

knowledge of these is supposed to come from lib.d.ts Make sure you load it here : https://github.com/basarat/TypeScriptEditor/blob/f8071ebaa2c1f84646fbd1907c28f3c58a643c42/scripts/lib/ace/mode/typescript/lightHarness.js#L83 and here : https://github.com/basarat/TypeScriptEditor/blob/f8071ebaa2c1f84646fbd1907c28f3c58a643c42/scripts/main.js#L33-L35

于 2014-04-06T00:47:52.673 回答