【发布时间】:2016-12-11 16:35:40
【问题描述】:
我创建了一个自定义 Knockout 扩展程序,但在扩展由 Knockout 的定义文件提供的现有接口时遇到了问题。
扩展器/Numeric.ts
import * as ko from "knockout";
function Extender(target: KnockoutObservable<number>, options: IOptions = {}): KnockoutObservable<number> {
// ...
};
interface IOptions {
// ...
}
export {Extender as NumericExtender, IOptions as INumericExtenderOptions}
Boot.ts
import * as ko from "knockout";
import {NumericExtender} from "./Extenders/Numeric";
class Boot {
public constructor() {
ko.extenders.numeric = NumericExtender;
}
}
为了让编译器了解ko.extenders.numeric,我需要扩展现有的接口:
interface KnockoutExtenders {
numeric(target: KnockoutObservable<number>, options?: INumericExtenderOptions): KnockoutObservable<number>;
}
现在我遇到了麻烦。为了访问INumericExtenderOptions,我需要一个import 声明:
import {INumericExtenderOptions} from "./Extenders/Numeric";
但是当添加import语句时,文件被认为是一个模块,which makes it impossible to extend an existing interface。
有没有办法做到这一点,或者我需要将IOptions 移动到定义文件以避免import?
【问题讨论】:
标签: typescript