在 TypeScript 中,2.2...
假设我有一个 Person 类型:
interface Person {
name: string;
hometown: string;
nickname: string;
}
我想创建一个函数来返回一个人,但不需要昵称:
function makePerson(input: ???): Person {
return {...input, nickname: input.nickname || input.name};
}
input
的类型应该是什么?我正在寻找一种动态方法来指定与 Person
相同的类型,除了 nickname
是可选的(nickname?: string | undefined
).到目前为止我发现的最接近的是:
type MakePersonInput = Partial<Person> & {
name: string;
hometown: string;
}
但这并不是我想要的,因为我必须指定所有必需的类型,而不是可选的类型。
最佳答案
您也可以这样做,仅部分键。
type Omit<T, K extends keyof T> = Pick<T, Exclude<keyof T, K>>
type PartialBy<T, K extends keyof T> = Omit<T, K> & Partial<Pick<T, K>>
interface Person {
name: string;
hometown: string;
nickname: string;
}
type MakePersonInput = PartialBy<Person, 'nickname'>
关于typescript - 在 TypeScript 中使单个属性可选,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43159887/