4
我正在爲fabric.js提供類型定義文件。的一般結構示出了下面的示例中:使用模塊中的接口作爲類中的字段時的Typescript錯誤
declare module fabric {
export interface Canvas {
selectionBorderColor: string;
selectionColor: string;
...
}
var Canvas: {
new(): Canvas;
}
}
該模式允許我在一個「接口狀」的方式使用fabric.Canvas,使得變量與fabric.Canvas接口相關聯。同時它允許我調用「靜態成員」(比如fabric.Canvas的構造函數)。
但是,當在類中使用接口「fabric.Canvas」的字段時,會導致問題。下面的示例示出了這種情況下:
此問題僅放置一個模塊內的界面時,會發生,否則一切工作正常。
此問題的任何解決方案?
是的,但我正在爲現有的JS庫(Fabric.JS)編寫一個類型定義文件。所以我需要支持像new fabric.Canvas,因爲這是庫所需要的(庫本身不是用腳本編寫的) – ollifant
如果實現在現有的JS庫中,則可以將'interface'關鍵字更改爲'class '。聲明的主體不需要改變,因爲它位於以'declare'關鍵字開頭的模塊中。我已經更新了我的答案來證明這一點。 – Fenton
爲界面使用不同的名稱現在似乎工作。在我的情況下,我現在使用ICanvas作爲接口,使用Canvas作爲聲明(以便新的fabric.Canvas仍然有效)。 – ollifant