【发布时间】:2016-10-04 13:37:20
【问题描述】:
我使用这样的记录方法安装了knockout 定义。
npm install @types/knockout
效果很好,我可以像这样在任何地方导入它。
import * as ko from "knockout";
但是,我坚持使用一些自定义内容扩展 KnockoutStatic 接口。我正在尝试迁移基于 <reference ... /> 和 namespace 的大型 TS 应用程序以使用模块。之前,我轻松地声明了扩展接口 anywhere 并且声明被合并了。假设我的扩展程序看起来像这样。
interface KnockoutStatic {
doSomething(): void;
}
我尝试创建一个 KnockoutExtensions.d.ts 文件,并在其中声明它是这样的。
import "knockout";
declare module "knockout" {
export interface KnockoutStatic {
doSomething(): void;
}
}
但是当我在某处同时导入knockout 和我的扩展时,TS 仍然无法解析doSomething 调用。
import * as ko from "knockout";
import "./KnockoutExtensions";
ko.doSomething(); // error
使用 TypeScript 2.0 和新的d.ts 子系统扩展库接口的正确方法是什么?
我正在使用安装了 TypeScript 2.0 的 Visual Studio 2015 Update 3。
【问题讨论】: