Typescript 如何使拾取属性为局部属性

Typescript 如何使拾取属性为局部属性,typescript,typescript-partial,Typescript,Typescript Partial,我有这个功能 function someThing(someArg: Pick<HTMLElement, 'id' | 'style'>) {...} functionsomething(someArg:Pick){…} 但是,我只想将一些样式添加到someArg.style,而不是CSSStyleDeclaration中的所有样式。否则,函数的输入将是巨大的 所以我希望有类似于PickfromPartialnotPickfromCSSStyleDeclaration 如何才能做

我有这个功能

function someThing(someArg: Pick<HTMLElement, 'id' | 'style'>) {...}
functionsomething(someArg:Pick){…}
但是,我只想将一些样式添加到
someArg.style
,而不是
CSSStyleDeclaration
中的所有样式。否则,函数的输入将是巨大的

所以我希望有类似于
Pick
from
Partial
not
Pick
from
CSSStyleDeclaration


如何才能做到这一点?

由于您的类型比从现有类型中选择一些属性更复杂,您可能需要在其自己的界面中详细说明:

interface SomeArg {
  id: HTMLElement['id'],
  style: Partial<HTMLElement['style']>
}

function someThing(someArg: SomeArg) { }

someThing({id: "id", style: {
  zIndex: "1"
}})
请注意,虽然这在技术上使
id
类型
Partial
,但这很好,因为映射类型不修改原语<代码>部分只是
字符串
。因此,
someArg
的类型与我在上面阐述的
someArg
接口相同



希望有帮助。祝你好运

由于您的类型比从现有类型中选择一些属性更复杂,您可能需要在其自己的界面中详细说明:

interface SomeArg {
  id: HTMLElement['id'],
  style: Partial<HTMLElement['style']>
}

function someThing(someArg: SomeArg) { }

someThing({id: "id", style: {
  zIndex: "1"
}})
请注意,虽然这在技术上使
id
类型
Partial
,但这很好,因为映射类型不修改原语<代码>部分只是
字符串
。因此,
someArg
的类型与我在上面阐述的
someArg
接口相同



希望有帮助。祝你好运

因此,如果拾取的属性是对象类型,则希望它们是局部的?带有映射类型的条件类型可以很好地用于
类型PartialProps={[P in keyof T]:T[P]扩展对象?Partial:T[P]}
并使用它
PartialProps
不能
Pick
很好地满足您的需要?非常好的方法@TitianCernicova Dragomir。我到底想要什么?如果拾取的属性是对象类型,您希望它们是局部的吗?带有映射类型的条件类型可以很好地用于
类型PartialProps={[P in keyof T]:T[P]扩展对象?Partial:T[P]}
并使用它
PartialProps
不能
Pick
很好地满足您的需要?非常好的方法@TitianCernicova Dragomir。正是我想要的这是一种正确的实现方法,但我不想重复
id
style
键。我会从@TitianCernicova Dragomir-创建一个新类型
PartialProps={[P in keyof T]:T[P]扩展对象?Partial:T[P]}
如果你想把这个版本添加到你的答案中,我不介意,我不打算添加应答器您甚至不需要区分
对象
类型,因为映射类型不修改原语(例如,
部分
只是
字符串
)。我想我会把它添加到这个答案中。@jcalz hm错过了这一点,我想这是最近的工作我不确定基本体,但我非常确定
Partial
用于破坏数组类型。。是的,它用于破坏数组类型(不是说数组是基本体)但现在它们映射得很好。这是一种正确的实现方法,但我不想重复
id
style
键。我会从@TitianCernicova Dragomir-创建一个新类型
PartialProps={[P in keyof T]:T[P]扩展对象?Partial:T[P]}
如果你想把这个版本添加到你的答案中,我不介意,我不打算添加应答器您甚至不需要区分
对象
类型,因为映射类型不修改原语(例如,
部分
只是
字符串
)。我想我会把它添加到这个答案中。@jcalz hm错过了这一点,我想这是最近的工作我不确定基本体,但我非常确定
Partial
用于破坏数组类型。是的,它过去破坏数组类型(并不是说数组是基本体),但现在很好地映射了它们。