我正在尝试更新我的敲除打字,因为最新版本的打字稿正在检测旧打字稿的问题。
问题在于试图让 knockout 和 knockout.es5 类型一起工作。
我正在使用 VS2017 和 tsconfig 文件。
我像这样安装淘汰赛类型:
typings install dt~knockout
然后我像这样安装敲除-es5类型:
typings install dt~knockout-es5 --global
在我安装了淘汰赛 es5 类型后,它们会出现编译错误,因为没有这样的类型KnockoutObservable<T>
。
所以我将这个添加到了敲除 es5 类型的顶部:
/// <reference path="../../modules/knockout/index.d.ts" />
import * as ko from "knockout";
并更改KnockoutObservable<any>
为ko.Observable<any>
现在可以编译。
所以..现在我想使用这些类型来创建一个淘汰视图模型,所以在一个新的打字稿文件中:
import * as ko from "knockout"
class Foo {
Id: number
Name: string
constructor(id: number, name: string) {
this.Id = id;
this.Name = name;
ko.track(this);
}
}
这会导致编译错误,因为track
在typeof ko
这是因为 ko 是从knockout
模块中导入的,该模块是从类型中导出的knockout
,但是track
它是一种方法,应该由类型添加knockout-es5
,但不是。如何进一步修改 knockout-es5 分型文件以使其正常工作?
更新:我尝试将其添加到 knockout.es5/index.d.ts 文件的底部:
declare var ko: KnockoutStatic;
declare module "knockout-es5" {
export = ko;
}
在我的打字稿文件中,我正在尝试:
import * as ko from "knockout-es5"
但是 import 语句不会编译:它说cannot find module knockout-es5
.
我也试过这个:
import * as ko from "../typings/globals/knockout.es5/index"
这似乎可行,但是我必须更改我的代码才能做到这一点,这对我来说似乎是错误的(注意附加的.ko
:
class Application {
Id: number
Name: string
constructor(id: number, name: string) {
this.Id = id;
this.Name = name;
ko.ko.track(this);
}
}
而且一旦我这样做了,我就不能再解析ko
像ko.Observable
.