Typescript如何扩展使用泛型类型的接口?

Typescript如何扩展使用泛型类型的接口?,typescript,Typescript,我已设置此接口结构: export interface Response<T> { hasMoreResults: boolean pageToken: string | null status: string result: T } export interface ArrayResponse<T> { hasMoreResults: boolean pageToken: string | null status: string res

我已设置此接口结构:

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[]
}
导出接口响应{
hasMoreResults:布尔型
pageToken:字符串| null
状态:字符串
结果:T
}
导出接口阵列响应{
hasMoreResults:布尔型
pageToken:字符串| null
状态:字符串
结果:T[]
}
由于有许多共享字段,我想写一些类似的内容:

interface ArrayResponse extends Response<T>{
    result: T[]
}
接口阵列响应扩展响应{
结果:T[]
}
然而,这抛出了一个我无法修复的错误。是否有一种简单的方法可以更改在这两种情况下都使用泛型的属性类型?我不想在一个界面中执行
t | t[]
,因为这会导致代码出现问题。谢谢。

当然,你可以这样做

export interface ArrayResponse<T> extends Omit<Response<T>, "result"> {
  result: T[]
}
导出接口ArrayResponse扩展忽略{
结果:T[]
}
当然,你可以这样做

export interface ArrayResponse<T> extends Omit<Response<T>, "result"> {
  result: T[]
}
导出接口ArrayResponse扩展忽略{
结果:T[]
}

查看您的代码
ArrayResponse
Response
之间的唯一区别在于
结果
是一个数组

您可以使用:

export interface Response<T> {
  hasMoreResults: boolean
  pageToken: string | null
  status: string
  result: T
}

export type ArrayResponse<T> = Response<T[]>
导出接口响应{
hasMoreResults:布尔型
pageToken:字符串| null
状态:字符串
结果:T
}
导出类型ArrayResponse=响应

由于
Response
已经可以将任何类型作为参数。

查看您的代码,
ArrayResponse
Response
之间的唯一区别在于
result
是一个数组

您可以使用:

export interface Response<T> {
  hasMoreResults: boolean
  pageToken: string | null
  status: string
  result: T
}

export type ArrayResponse<T> = Response<T[]>
导出接口响应{
hasMoreResults:布尔型
pageToken:字符串| null
状态:字符串
结果:T
}
导出类型ArrayResponse=响应

因为
Response
已经可以将任何类型作为参数。

据我所知,
ArrayResponse
只是
Response
的一个实例,其中
T
是一个数组。如果我们想定义
ArrayResponse
只传入项目类型,我们可以这样做:

export interface Response<T> {
  hasMoreResults: boolean
  pageToken: string | null
  status: string
  result: T
}

export interface ArrayResponse<T> extends Response<T[]>  {
}

导出接口响应{
hasMoreResults:布尔型
pageToken:字符串| null
状态:字符串
结果:T
}
导出接口ArrayResponse扩展响应{
}

据我所知,
ArrayResponse
只是
响应的一个实例,其中
T
是一个数组。如果我们想定义
ArrayResponse
只传入项目类型,我们可以这样做:

export interface Response<T> {
  hasMoreResults: boolean
  pageToken: string | null
  status: string
  result: T
}

export interface ArrayResponse<T> extends Response<T[]>  {
}

导出接口响应{
hasMoreResults:布尔型
pageToken:字符串| null
状态:字符串
结果:T
}
导出接口ArrayResponse扩展响应{
}

在您的情况下,为什么不使用
接口ArrayResponse扩展响应{}
?这让我无法找到名称“t”。不幸的是,在您的情况下,为什么不使用
接口ArrayResponse扩展响应{}
?不幸的是,这让我找不到名称“T”。我认为这是最干净的解决方案。谢谢,我认为这是最干净的解决方案