考虑以下几点:
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
,您可以对其进行扩展等等。
您不能创建扩展由 type
创建的别名的 Interface
。
此外,错误消息不会显示 ManOrDog
。
在这种情况下,对于联合类型,别名是唯一的方式。
然而,对于交叉路口类型,您可以在新类型与
之间进行选择interface ManAndDog extends Man, Dog { }
和一个别名
type ManAndDog = Man & Dog;
关于typescript - 如何从两个接口(interface)的联合创建一个类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45882213/