Skip to content

Commit

Permalink
feat(react): 新增 ExtendComponentProps
Browse files Browse the repository at this point in the history
  • Loading branch information
fjc0k committed Jul 20, 2020
1 parent 57196ff commit a1c30c1
Show file tree
Hide file tree
Showing 2 changed files with 27 additions and 0 deletions.
26 changes: 26 additions & 0 deletions src/react/ExtendComponentProps.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
import React from 'react'
import { Merge } from '../types'

/**
* 继承组件属性。
*
* @template TComponent 组件
* @template TExclude 需去除的属性
* @template TRef 新的 ref
* @template TOverride 覆盖属性
*/
export type ExtendComponentProps<
TComponent extends
| React.ComponentType
| keyof JSX.IntrinsicElements
| React.JSXElementConstructor<any>,
TExclude extends keyof React.ComponentProps<TComponent>,
TRef extends any = never,
TOverride extends Partial<React.ComponentProps<TComponent>> = never
> = Merge<
Merge<
Omit<React.ComponentProps<TComponent>, TExclude>,
[TOverride] extends [never] ? {} : TOverride
>,
[TRef] extends [never] ? {} : React.RefAttributes<TRef>
>
1 change: 1 addition & 0 deletions src/react/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ export * from 'react-use'

// @index(['./**/*.ts', '!./**/*.{test,taro}.*', '!./{useToggle,createGlobalState,useTitle,useInterval,useSearchParam,useLocalStorage,useWindowSize}.*'], f => `export * from '${f.path}'`)
export * from './defineComponent'
export * from './ExtendComponentProps'
export * from './isVisibleValue'
export * from './renderComponent'
export * from './useClassName'
Expand Down

0 comments on commit a1c30c1

Please sign in to comment.