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