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