【发布时间】:2021-11-07 02:01:25
【问题描述】:
我有一个单调的接口列表。像这样:
interface interface10 {
trackingId: string
status: string
payload: {
code: string
message: string
}
}
interface interface11 {
trackingId: string
status: string
payload: {
error: number
message: string
}
}
interface interface12 {
trackingId: string
status: string
payload: {
name: string
surname: string
age: number
}
}
interface interface13 {
trackingId: string
status: string
payload: {
name: string
data: number[]
labels: Date[]
}
}
我想用 trackingId、status 和 payload:T 创建一个通用接口。 如何在不创建额外接口的情况下扩展接口并指定有效负载类型? 我只能做到这一点:
interface IBase<T> {
trackingId: string
status: string
payload: T
}
interface payload1 {
code: string
message: string
}
interface interface14 extends IBase<payload1> {
// Eslint say that i should create at least 1 new property
what: string
}
export type interface15 = IBase<{
code: string
string: string
}>
payload 继承和重定义的选项不合适,需要在新接口中指定payload body。如下所示:
interface interface15 extends IBase<interface15> {
code: string
message: string
}
interface interface16 = IBase<{
code: string
message: string
}>
【问题讨论】:
-
使用
interface16,但作为类型别名,如type interface16 = ...。
标签: typescript generics inheritance typescript-generics interface-implementation