Я установил определения knockout
, используя задокументированный метод, подобный этому.
npm install @types/knockout
Он прекрасно работает, я могу импортировать его куда угодно.
import * as ko from "knockout";
Однако я застрял в расширении интерфейса KnockoutStatic
некоторыми пользовательскими вещами. Я пытаюсь перенести огромное приложение TS на основе <reference ... />
и namespace
для использования модулей. Раньше я легко объявлял интерфейс расширения где угодно, и объявления объединялись. Допустим, мое расширение выглядит так.
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
?
Я использую Visual Studio 2015 Update 3 с установленным TypeScript 2.0.