我有這個界面
export interface ChartDataResponseI {
consumption: string
generation: string
measure_name: string
point_delivery_number: string
self_coverage: string
time: string
}
如果可能的話,我想要實作的是創建point_delivery_number一個通用物件屬性
它應該看起來像這樣:
export interface ChartDataResponseI<T> {
consumption: string
generation: string
measure_name: string
[T]: string
self_coverage: string
time: string
}
所以我可以像這樣傳遞密鑰:
ChartDataResponse<"point_delivery_number">
或者
ChartDataResponse<"community_number">
uj5u.com熱心網友回復:
您可以使用簡單的交集。
interface ChartDataResponseI {
consumption: string
generation: string
measure_name: string
self_coverage: string
time: string
}
type ChartDataWithProp<T> = ChartDataResponseI & T;
const chartData: ChartDataWithProp<{point_delivery_number: number, round: string}> = {
consumption: 'string',
generation: 'string',
measure_name: 'string',
self_coverage: 'string',
time: 'string',
point_delivery_number: 2,
round: 'yes'
};
TS游樂場
uj5u.com熱心網友回復:
你真的需要通用嗎?如果您只有這兩個可能不同的鍵,請考慮以下內容:
interface ChartDataResponse {
consumption: string
generation: string
measure_name: string
self_coverage: string
time: string
}
export interface ChartDataResponsePointDelivery extends ChartDataResponse {
point_delivery_number: number
}
export interface ChartDataResponseCommunity extends ChartDataResponse {
community_number: number
}
現在您有了一個基本ChartDataResponse介面,它針對這兩種不同的情況進行了擴展。如果需要,也很容易進一步擴展它。兩者都ChartDataResponsePointDelivery具有ChartDataResponseCommunity所有的鍵ChartDataResponse加上附加鍵。
另請注意,基本介面根本沒有匯出,因此您不會意外使用沒有任何鍵的基本介面。
通常,當您處于需要接受“任何物件”的情況時,您如何處理這種情況存在更深層次的問題。TypeScript 的全部意義在于執行并讓您知道您正在處理什么樣的物件以及它們具有哪些鍵。
uj5u.com熱心網友回復:
使用繼承
interface ChartDataResponseI {
consumption: string
generation: string
measure_name: string
//point_delivery_number: string <- if its not default remove it
self_coverage: string
time: string
}
interface another extends ChartDataResponseI {
point_delivery_number: string
//or
anything: string
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/487930.html
標籤:javascript 打字稿
上一篇:記憶降低性能并花費更多時間
下一篇:函式結束時如何重置變數值?
