All files / react DeriveComponentProps.ts

0% Statements 0/0
0% Branches 0/0
0% Functions 0/0
0% Lines 0/0

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29                                                         
import React from 'react'
import { Merge } from '../types'
 
/**
 * 派生新的组件属性。
 *
 * @template TComponent 原组件
 * @template TExclude 需去除的属性
 * @template TRef 新的 ref
 * @template TOverride 覆盖属性
 */
export type DeriveComponentProps<
  TComponent extends
    | React.ComponentType
    | keyof JSX.IntrinsicElements
    | React.JSXElementConstructor<any>,
  TExclude extends keyof React.ComponentProps<TComponent>,
  TRef extends any = never,
  TOverride extends Partial<
    Record<keyof React.ComponentProps<TComponent>, any>
  > = never
> = Merge<
  Merge<
    Omit<React.ComponentProps<TComponent>, TExclude>,
    [TOverride] extends [never] ? {} : TOverride
  >,
  { ref?: React.Ref<TRef> }
>