我正在尝试更新我的淘汰赛类型,因为最新版本的打字稿是检测旧版本的问题。
问题在于试图让淘汰赛和knockout.es5打包一起工作。
我正在使用VS2017和tsconfig文件。
我安装了淘汰赛类型:
typings install dt~knockout
然后我像这样安装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
是一个由{{1}添加的方法打字,但不是。如何进一步修改knockout-es5打字文件以使其正常工作?
更新:我尝试将其添加到knockout.es5 / index.d.ts文件的底部:
knockout-es5
在我的打字稿文件中,我正在尝试:
declare var ko: KnockoutStatic;
declare module "knockout-es5" {
export = ko;
}
但是import语句不会编译:它说import * as ko from "knockout-es5"
。
我也试过这个:
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
。
答案 0 :(得分:0)
我认为你在寻找的是什么。
import ko from 'knockout'
ko是默认对象,将单独导入。
当您使用这种方式时,您将导入所有对象,而不仅仅是ko。
import * as ko from "knockout-es5"
如果您打算使用这种方式,您可能正在寻找它以便将ko从完整对象中拉出来。
import { ko } from "knockout-es5"