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”。我认为这是最干净的解决方案。谢谢,我认为这是最干净的解决方案