我有關于 TypeScript 中的型別的這個問題:我正在為 d3 可視化的 x 軸創建一個 svelte 組件,在那里我將xScale父組件作為屬性傳遞為
<XAix {xScale}/>
在xScale定義了where 的父元素中,TypeScriptxScale根據 的初始化分配了一個型別xScale,它看起來像
const xScale = d3.scaleBand().domain([/*string array*/]).range([/*numeric array*/]).padding();
并在XAxis.svelte我xScale根據我的定義手動注釋道具xScale。但是,我希望能夠動態注釋xScaleinside XAxis.svelte,因為我想XAxis.svelte為其他可視化制作一個可重用的組件,有時 x 軸比例是用另一個 d3 比例定義的,例如
const xScale = d3.scaleLinear().domain([/*numeric array*/]).range([/*numeric array*/])
我在想的是在xScale父元素中定義 之后,我提取型別并將其存盤在某處,然后將其匯入XAxis.svelte. 這是解決這個問題的方法嗎?如果是,我該如何實施?如果不是,正確的方法是什么?
uj5u.com熱心網友回復:
通過使用 svelte 組件構建圖表的各個部分,您可以根據創建 svelte 組件的順序、生命周期方法和在組件之間傳遞資料來增加復雜性。
我強烈建議將您的 d3 圖形作為單個 svelte 組件保留在您的 svelte 代碼中,并將您的圖表的不同部分分成 TypeScript 類和函式。然后,您可以使用這些類和函式來構建圖表。
使這些組件(如果可能)無狀態,并將狀態的基本事實保留在 d3 svelte 組件的根部。
然后,您可以對單個 svelte 組件中的事件和生命周期方法做出反應,并相應地更新您的圖表。
uj5u.com熱心網友回復:
換個角度思考:Svelte 組件定義了一個 API 并告訴它的用戶可以將什么放入其中。因此,在型別方面,您還需要提前定義它期望的型別。我對 d3 了解不多,但根據您的用例,您可以創建滿足所有可能用例的型別,例如export let xScal: number[] | number | SomethingElse;.
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/390805.html
