& (交叉类型)
&让两者的类型都满足才行,否则报错:
interface Bird {
name: string;
fly(): void;
}
interface Per {
name: string;
talk(): void;
}
type BirdPerson = Bird & Per;
let p: BirdPerson = { name: "zhufeng", fly() {}, talk() {} };
let p1: BirdPerson = { name: "zhufeng", fly() {} };//缺少talk()
|(联合类型 )
即满足其中一个类型即可:
type Day = number | string;
let oneDay: Day = 1;
let twoDay: Day = '2';
let threeDay: Day = {};// 报错=> 不能将类型“{}”分配给类型“Day
Pick(提取关键字)
Pick<T, U>:从T中提取U属性,返回取到的所有属性。
// Pick提取关键字
type Person1 = Pick<Persons, "name" | "age">; //=> { name: string; age: number;