Typescript 我如何声明一个类型,在该类型中,我从接口拾取属性,并使拾取的属性';哪些属性是可选的?

Typescript 我如何声明一个类型,在该类型中,我从接口拾取属性,并使拾取的属性';哪些属性是可选的?,typescript,typescript2.0,typescript-generics,Typescript,Typescript2.0,Typescript Generics,就像在这个例子中,我不想选择一个属性并使整个事情成为可选的。但是,我想将拾取的属性设置为可选 目前,我通过显式编写{items:Partial[]}来解决这个问题 有更聪明的方法吗 接口项{ 身份证号码 名称:string } 界面用户{ 身份证号码 名称:string 项目:项目[] } 键入UserWithOptionalItemsItself=Pick&Partial 常量x:UserWithOptionalItemsItself={ id:1, 名称:“用户名”, //项目是可选的。这

就像在这个例子中,我不想选择一个属性并使整个事情成为可选的。但是,我想将拾取的属性设置为可选

目前,我通过显式编写
{items:Partial[]}
来解决这个问题

有更聪明的方法吗


接口项{
身份证号码
名称:string
}
界面用户{
身份证号码
名称:string
项目:项目[]
}
键入UserWithOptionalItemsItself=Pick&Partial
常量x:UserWithOptionalItemsItself={
id:1,
名称:“用户名”,
//项目是可选的。这不是我想要的
}
键入UserWithOptionalItems=Pick&{items:Partial[]}
常量y:UserWithOptionalItems={
id:1,
名称:“用户名”,
//您必须有项目,但属性是可选的
项目:[{
身份证号码:123
}]
}

在这里,
id
name
是强制性的,其中
项目
是可选的。如果未提供,它们将返回
未定义的

您还可以为项目提供默认值:

interface User{
    id: number
    name: string

    items?: Item[] | undefined
}