考虑以下几点:如何从两个接口的联合创建一个类型?
interface Man {
name: string
}
interface Dog {
breed: string
}
let manDog: Man | Dog;
是否有可能创建一个类型ManDog
这是Man | Dog
相当于这样就可以做到这一点:
let manDog: ManDog;
考虑以下几点:如何从两个接口的联合创建一个类型?
interface Man {
name: string
}
interface Dog {
breed: string
}
let manDog: Man | Dog;
是否有可能创建一个类型ManDog
这是Man | Dog
相当于这样就可以做到这一点:
let manDog: ManDog;
可以使用type
关键字(不let
)为您的联合类型创建
一个新类型
别名。
https://www.typescriptlang.org/docs/handbook/advanced-types.html
interface Man {
name: string
}
interface Dog {
breed: string
}
type ManOrDog = Man | Dog;
有效地利用这些联合类型,不要忘了对类型警卫一看,在同一个文档的链接解释。
编辑:为什么我用别名更换新型:
一种新型的将是另一个Interface
,你可以扩展等等。
您不能创建Interface
来扩展由type
创建的别名。
此外,错误消息不会显示ManOrDog
。
在这种情况下,对于联合类型,别名是唯一的方法。
对于交集型然而,你将有一个新型之间的选择与
interface ManAndDog extends Man, Dog { }
和别名
type ManAndDog = Man & Dog;
你可以使用继承来实现它
interface ManDog extends Man, Dog {}
备选地作为这样的类型为具有任Man
一个或Dog
type ManDog = Man | Dog;
感谢。哪一个被认为是最佳实践? –
@camden_kid如果你不打算增加更多的功能,请使用选项2) –
你确定它不应该是'type ManDog = Man |犬;'? –