如何从两个接口的联合创建类型?

cam*_*kid 7 typescript

考虑以下:

interface Man {
  name: string
}

interface Dog {
  breed: string
}

let manDog: Man | Dog;
Run Code Online (Sandbox Code Playgroud)

是否可以创建一种ManDog等效于的类型,Man | Dog以便可以执行此操作:

let manDog: ManDog;
Run Code Online (Sandbox Code Playgroud)

Pac*_*ac0 8

您可以使用type关键字 (not let)为您的联合类型创建一个新类型和别名。

https://www.typescriptlang.org/docs/handbook/advanced-types.html

interface Man {
  name: string
}

interface Dog {
  breed: string
}

type ManOrDog = Man | Dog;
Run Code Online (Sandbox Code Playgroud)

要有效地使用这些联合类型,请不要忘记查看类型保护,在同一个文档链接中进行了解释。


编辑:为什么我更换了新的类型别名

一个新类型是 another Interface,你可以扩展等等。

您不能创建Interface扩展由type.

此外,错误消息不会显示ManOrDog

在这种情况下,对于联合类型,别名是唯一的方法。

对于路口键入然而,你将有一个之间的选择新型带有

interface ManAndDog extends Man, Dog { }
Run Code Online (Sandbox Code Playgroud)

和一个别名

type ManAndDog = Man & Dog;
Run Code Online (Sandbox Code Playgroud)