Skip to main content

联合类型与继承类型

有两个 type 定义:

type UserA = {
name: string;
};
type UserB = {
sex: number;
};

继承类型(组合类型、交叉类型)

type User = UserA & UserB;

表示将UserAUserB两个类型的属性合并,如果遇到相同属性名但类型不同的,则会变成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 {
//
}