我想定义一个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}>