使用is
进行类型收窄
function isUser(person: Person): person is User {
return person.type === 'user'
}
使用&
进行属性的合并
使用&
操作符可以实现属性合并
type User = {
name: string
}
type Admin = {
age: number
}
type Person = User | Admin;
// 此时 Person 可以包含 name 或者可以包含 age
type Staff = User & Admin;
// 此时 Staff 必须同时包含 name 和age
Partial<Type>
使用Partial<Type>
将所有类型属性变成可选
interface Todo {
title: string;
description: string;
}
function updateTodo(todo: Todo, fieldsToUpdate: Partial<Todo>) {
return { ...todo, ...fieldsToUpdate };
}
const todo1 = {
title: "organize desk",
description: "clear clutter",
};
const todo2 = updateTodo(todo1, {
description: "throw out trash",
});
Partial
的实现:
type Partial<T> = { [P in keyof T]?: T[P] };
Required<Type>
与Partial
相反,将可选属性变为必选
interface Props {
a?: num