打字稿扩展了两个像类型一样的接口?

Posted

技术标签:

【中文标题】打字稿扩展了两个像类型一样的接口?【英文标题】:Typescript extend two interfaces like type? 【发布时间】:2021-04-30 11:54:06 【问题描述】:

在查看the documentation 和这个SO Question 之后,我正在寻找的行为如下:

type A = 
  a:string
;
type B = 
  b:string
;

type C = A & B & 
   c:string
;

我的问题是:可以在一行中使用接口完成相同的行为吗?

【问题讨论】:

我隐约记得在这个问题上看到过重复,但我找不到。 请考虑提供minimal reproducible example 您正在尝试做的事情,并有足够的结构来区分好答案和坏答案。现在它有点了:你有空对象类型,所以Primary1Primary2 彼此等价,Secondary 只等价于prop: string。您可以扩展多个接口,例如 interface Secondary extends Primary1, Primary2 prop: string ,但我不确定这是否真的满足您在示例中没有更多内容的任何用例。 我猜了一下,希望这就是你要找的 谢谢,我更新了。 【参考方案1】:

你可以extend a comma-separated list of interfaces at once,只要接口没有不同类型的重叠属性:

interface Primary1  prim1: string ;
interface Primary2  prim2: string ;
interface Secondary extends Primary1, Primary2  prop: string 

declare const secondary: Secondary;
secondary.prim1.toUpperCase(); // ok
secondary.prim2.toUpperCase(); // ok
secondary.prop.toUpperCase(); // ok

Playground link to code

【讨论】:

以上是关于打字稿扩展了两个像类型一样的接口?的主要内容,如果未能解决你的问题,请参考以下文章

通用无状态组件 React 的类型?或在打字稿中扩展通用函数接口以具有进一步的通用性?

如何在打字稿上制作多种类型的属性接口

有没有办法在打字稿的类型级别上将两个数字相加?

打字稿:使用类型进行显式导入

打字稿:为啥类型别名满足约束但相同的接口不满足?

扩展打字稿中的快速请求类型