联合类型与继承类型
有两个 type 定义:
type UserA = {
name: string;
};
type UserB = {
sex: number;
};
继承类型(组合类型、交叉类型)
type User = UserA & UserB;
表示将UserA
和UserB
两个类型的属性合并,如果遇到相同属性名但类型不同的,则会变成never
类型。
联合类型
type UserUnion = UserA | UserB;
表示User
要么是UserA
要么是UserB
类型,不可以都是。一般用在判断上:
const user = {} as UserUnion;
if ('name' in user) {
user.name = 'remy';
} else {
user.sex = 1;
}
由于联合类型是不确定的类型,所以无法被实现,即
// error! A class can only implement an object type or intersection of object types with statically known members.ts(2422)
class User implements UserUnion {
//
}