如何在打字稿中定义选项部分?

时间:2018-10-29 09:37:27

标签: typescript

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?

1 个答案:

答案 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'>