簡體   English   中英

Typescript 如何擴展使用泛型類型的接口?

[英]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[]作為一個接口的結果,因為這會導致我的代碼出現問題。 謝謝。

查看您的代碼, ArrayResponseResponse之間的唯一區別是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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM