将 TypeScript 1.8.10 升级到 3.1.6

Upgrading form TypeScript 1.8.10 to 3.1.6

我有一个基于打字稿 1.8.10 的 VSTS 扩展。我想将它升级到最新的打字稿 3.1.6。 我可以通过发出 npm i typescript@3.1.6 --save-dev 来做到这一点。 但是,这样做之后,我收到了来自 *.d.ts 文件的错误数量。主要来自knockout.d.ts和node.d.ts。我试过以下:

错误如下所示:

[15:45:28] 使用 tsc 版本 3.1.6 编译 TypeScript 文件

[15:45:37] [tsc] > definitions/knockout.d.ts(10,2): 错误 TS2411: 属性 'notifySubscribers' 类型 '( valueToWrite?: T, event?: string) => void' 不可分配给字符串索引类型 'KnockoutBindingHandler'.

[15:45:37] [tsc] > definitions/knockout.d.ts(20,2): 错误 TS2411: 属性 'equalityComparer' 类型 '( a: any, b: any) => boolean' 不可分配给字符串索引类型 'KnockoutBindingHandler'.

[15:45:37] [tsc] > definitions/knockout.d.ts(25,5): 错误 TS2411: 属性 'indexOf' 类型 '( searchElement: T, fromIndex?: number) => number' 不可分配给字符串索引类型 'KnockoutBindingHandler'.

[15:45:37] [tsc] > definitions/knockout.d.ts(26,5): 错误 TS2411: 属性 'slice' 类型 '( start: number, end?: number) => T[]' 不可分配给字符串索引类型 'KnockoutBindingHandler'.

到目前为止似乎没有任何效果。如果有人可以指导我,我将不胜感激。

谢谢。

所以我能够解决这个问题。

首先是 'vss-web-extension-sdk' 当时不支持 TS 3.0。

所以我不得不改用 TS 2.9.2。 另一件事是我改变了我以前的所有参考文献;

///<reference path="../definitions/Q.d.ts" />

/// <reference type="Q" />

这些解决了大部分错误。