使用 OR 条件扩展 TypeScript 中的多个接口
Posted
技术标签:
【中文标题】使用 OR 条件扩展 TypeScript 中的多个接口【英文标题】:Extend multiple interface in TypeScript with OR condition 【发布时间】:2020-12-28 18:06:48 【问题描述】:我有三个接口
inteface A
name: string
id: number
address: string
details : object
inteface B
name: string
id: string
address: string
details : string
age: number
inteface C
name: string
id: string
address: object
details : object
age: number
height: number
是的,你注意到了,不同的接口可能有不同类型的公共字段
比如接口A有id: number
,但B有id: string
现在我有了一个通用接口
interface Common
group: string
class: string
现在我有一个函数,它接受参数 Object,它肯定有 interface Common 字段,但可能有接口 A、B 和 C 之一的字段
我想使用Common
,它将扩展其中的任何一个接口A
、B
和C
function insert(params: Common)
....
现在我想使用泛型,但我没有做我想做的事, 那么有人可以告诉我如何将它与泛型一起使用并获得我想要的,如果它可以通过泛型来完成,
如果不建议我另一种方法。
【问题讨论】:
【参考方案1】:你可以这样做:
type ABC = A | B | C
function insert(params: Common & ABC):
...
【讨论】:
好的。但是,这是我的例子:export interface A type: string; svc:字符串; 导出接口 B id: string; 导出类型 AB = A |乙; func(config: AB) if (config.type) ... 这给我带来了一个 TS 错误:TS2339: 属性 'type' 在类型 'AB' 上不存在。类型“B”上不存在属性“类型”。以上是关于使用 OR 条件扩展 TypeScript 中的多个接口的主要内容,如果未能解决你的问题,请参考以下文章
如何使用具有多个页面和入口点的 React 和 TypeScript 设置 chrome 扩展?
使用 TypeScript 3 扩展道具的 React 组件中的默认属性值