2017-08-25 54 views

回答

2

可以使用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; 
2

你可以使用继承来实现它

interface ManDog extends Man, Dog {} 

备选地作为这样的类型为具有任Man一个或Dog

type ManDog = Man | Dog; 
+0

感谢。哪一个被认为是最佳实践? –

+0

@camden_kid如果你不打算增加更多的功能,请使用选项2) –

+1

你确定它不应该是'type ManDog = Man |犬;'? –

相关问题