我创建了一个自定义 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 语句后,该文件就被认为是一个模块,这使得无法扩展现有接口 https://stackoverflow.com/a/32959534/247702.
有没有办法做到这一点,或者我需要搬家IOptions
到定义文件以避免import
?