1
我遇到了需要使用第三方接口(更具體地說是D3)創建類的情況。使用匿名函數的Typescript類實現接口
我想創建一個實現D3.Force接口的類,但是我的編譯器不會擁有它。
class CustomForce<NodeDatum extends D3.SimulationNodeDatum> implements D3.Force<NodeDatum, any> {
// Some more code at some point
}
這引發以下錯誤:
Class 'CustomForce<NodeDatum>' incorrectly implements interface 'Force<NodeDatum, any>'.
Type 'CustomForce<NodeDatum>' provides no match for the signature '(alpha: number): void'
通過檢查定義D3.Force,我看到以下內容:
export interface Force<NodeDatum extends SimulationNodeDatum, LinkDatum extends SimulationLinkDatum<NodeDatum> | undefined> {
(alpha: number): void;
initialize?(nodes: NodeDatum[]): void;
}
如何實現一個匿名函數中取alpha
作爲參數?!
我懷疑這樣的。在Typescript中創建一個函數時感覺不對,該函數雖然有方法,但... –
那麼,在js中,函數是一個對象,所以在技術上這沒有問題。我通常也會避免這種情況,但有時候很高興有這個選擇 –