[英]Typescript how do I extend an interface which uses a generic type?
我設置了這個接口結構:
export interface Response<T> {
hasMoreResults: boolean
pageToken: string | null
status: string
result: T
}
export interface ArrayResponse<T> {
hasMoreResults: boolean
pageToken: string | null
status: string
result: T[]
}
由於有很多共享字段,我想寫這樣的東西:
interface ArrayResponse extends Response<T>{
result: T[]
}
但是,這會引發我無法修復的錯誤。 是否有一種直接的方法來更改在這兩種情況下都使用泛型的屬性類型? 我不想做T | T[]
T | T[]
作為一個接口的結果,因為這會導致我的代碼出現問題。 謝謝。
查看您的代碼, ArrayResponse
和Response
之間的唯一區別是result
是一個數組。
你可以使用:
export interface Response<T> {
hasMoreResults: boolean
pageToken: string | null
status: string
result: T
}
export type ArrayResponse<T> = Response<T[]>
As Response
已經可以將任何類型作為參數。
當然,你可以像這樣省略它
export interface ArrayResponse<T> extends Omit<Response<T>, "result"> {
result: T[]
}
據我所知, ArrayResponse
只是Response
的一個實例,其中T
是一個數組。 如果我們想將ArrayResponse
定義為只傳入項目類型,我們可以這樣做:
export interface Response<T> {
hasMoreResults: boolean
pageToken: string | null
status: string
result: T
}
export interface ArrayResponse<T> extends Response<T[]> {
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.