typescript - knockout es5 类型

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

我正在尝试更新我的 knockout 打字,因为最新版本的 typescript 正在检测旧版的问题。

问题来自试图让 knockout 和 knockout.es5 打字协同工作。

我正在使用 VS2017 和一个 tsconfig 文件。

我像这样安装 knockout 类型:

typings install dt~knockout

然后我像这样安装 knockout-es5 类型:

typings install dt~knockout-es5 --global

在我安装了knockout es5 typings之后,他们有编译错误,因为没有这样的类型KnockoutObservable<T> .

所以我将其添加到 knockout-es5 打字的顶部:

/// <reference path="../../modules/knockout/index.d.ts" />
import * as ko from "knockout";

并更改了KnockoutObservable<any>ko.Observable<any>现在可以编译了。

所以..现在我想使用这些类型来创建一个 knockout View 模型,所以在一个新的 typescript 文件中:

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);
    }
}

这导致编译错误为 tracktypeof ko 上不存在

这是因为 ko 是从 knockout 导入的模块,从 knockout 导出打字,然而track是一种旨在由 knockout-es5 添加的方法打字,但不是。我如何进一步修改 knockout-es5 类型文件以使其正常工作?

更新:我尝试将其添加到 knockout.es5/index.d.ts 文件的底部:

declare var ko: KnockoutStatic;

declare module "knockout-es5" {
    export = ko;
}

在我的 typescript 文件中,我正在尝试:

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 的类型.

最佳答案

我想你要找的是什么。

import ko from 'knockout'

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

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

import * as ko from "knockout-es5"

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

import { ko } from "knockout-es5"

关于typescript - knockout es5 类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47671487/

相关文章:

typescript - 无法使用 typescript 将选项对象添加到 SHA3 函数

javascript - typescript 2 : Custom Type definition in node_modules

javascript - 剑道击倒 : re-bind column template

javascript - 数据绑定(bind)中的 KnockoutJS 值切换

javascript - 如何确保对象符合 Typescript 接口(interface)?

javascript - 使用 typescript 将 Angular 网格列单元格文本与字符串数组进行比较

jquery mobile css 未应用于 knockout 模板

javascript - 为什么输入在 React 生成时不起作用

javascript - 为什么自定义事件不需要与 xxx.target.value 一起使用”

typescript - Jest 和 TypeScript 的不完整 stub