export type PartialOption<T,K extends string[]> = {[P in K]?: T[P]}
type Student = PartialOption<People, ['age', 'type']>
// So Student will like this
{
age?: number,
type?: string,
name: string
...
}
我的打字稿版本:“打字稿”:“ ^ 3.1.2”, 如何定义PartialOption?
答案 0 :(得分:1)
您只需要使用联合类型而不是元组类型。
export type PartialOption<T,K extends keyof T> = {[P in K]?: T[P]}
type Student = PartialOption<People, 'age' | 'type'>
实际上,这实际上与Partial
一起使用的bultin Pick<T, K>
类型相同。
如果您只想使某些属性成为可选属性,则可以使用Partial
标记可选属性,并使用Pick
提取其余属性,而无需更改其视标性
export type PartialOption<T,K extends keyof T> = Partial<Pick<T, K>> & Pick<T, Exclude<keyof T, K>>
type Student = PartialOption<People, 'age' | 'type'>