我已經創建了一個自定義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
?
設法找到了一些時間來過這,我結束了使用第三解。目前沒有模塊版本的Knockout可用,所以第二種解決方案對於這種情況不起作用。 – Stijn
奇怪。 'typings安裝knockout'肯定會安裝一個模塊淘汰聲明文件。但是,也許這不是你想要的文件? –
我的意思是實際的圖書館:)不是類型。除非我誤解了事情,並且有一種方法可以「模塊化」圖書館? – Stijn