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