我想定义一个泛型类型ExcludeCart<T>
,该类型本质T
上是cart
删除了给定的键(在我的情况下,)。因此,例如,ExcludeCart<{foo: number, bar: string, cart: number}>
将是{foo: number, bar: string}
。有没有办法在 TypeScript 中做到这一点?
这就是我想要这样做的原因,以防万一我找错了树:我将现有的 JavaScript 代码库转换为 TypeScript,它包含一个称为装饰器函数的函数,该函数cartify
接受一个 React 组件类Inner
并返回另一个组件类Wrapper
。
Inner
应该带一个cart
props,以及零个或多个其他props。Wrapper
接受一个cartClient
props(用于生成cart
要传递给的propsInner
),以及任何Inner
接受的props,除了 cart
.
换句话说,一旦我能弄清楚如何定义ExcludeCart
,我就想用它来做到这一点:
function cartify<P extends {cart: any}>(Inner: ComponentClass<P>) : ComponentClass<ExcludeCart<P> & {cartClient: any}>