interface User {
id?: string;
name: string;
age: number;
}
// 新增用户时,id不是必须的,name和age必须,如何给data定义呢?
export const addUser = (data: User) => fetch('/api/user/add', {
method: 'POST',
body: JSON.stringify(data)
})
// 更新用户时,id是必须的,name和age非必须,如何给data定义呢?
export const updateUser = (data: User) => fetch('/api/user/update', {
method: 'POST',
body: JSON.stringify(data)
})
方案1:分别定义
interface AddUser {
name: string;
age: number;
}
interface UpdateUser {
id: string;
name?: string;
age?: number;
}
const addUser = (data: AddUser) => fetch('/api/user/add', {
method: 'POST',
body: JSON.stringify(data)
})
const updateUser = (data: UpdateUser) => fetch('/api/user/update', {
method: 'POST',
body: JSON.stringify(data)
})
方案2:使用Partial
interface AddUser {
name: string;
age: number;
}
type UpdateUser = {
id: string;
} & Partial<AddUser>;
// Partial让AddUser的所有属性都变成可选的
const addUser = (data: AddUser) => fetch('/api/user/add', {
method: 'POST',
body: JSON.stringify(data)
})
const updateUser = (data: UpdateUser) => fetch('/api/user/update', {
method: 'POST',
body: JSON.stringify(data)
})
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。