淘汰赛es5打字

时间:2017-12-06 10:00:48

标签: typescript knockout.js typescript-typings definitelytyped knockout-es5-plugin

我正在尝试更新我的淘汰赛类型,因为最新版本的打字稿是检测旧版本的问题。

问题在于试图让淘汰赛和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

1 个答案:

答案 0 :(得分:0)

我认为你在寻找的是什么。

import ko from 'knockout'

ko是默认对象,将单独导入。

当您使用这种方式时,您将导入所有对象,而不仅仅是ko。

import * as ko from "knockout-es5"

如果您打算使用这种方式,您可能正在寻找它以便将ko从完整对象中拉出来。

import { ko } from "knockout-es5"