小编Ped*_*edo的帖子

“任意”泛型类型

是否有任何 TypeScript 解决方案,可以帮助我拥有“无限”数量的泛型类型,而不必键入所有类型,当然?

示例如下:

type Args<T extends React.ComponentType<any>> = { component: T, presetProps: React.ComponentProps<T>};

function buildComponents<T extends React.ComponentType<any>>(...args: Args<T>[] ) : any

function componentJ({name, age}: {name: string, age: number}){
  return <h1>123</h1>
}

function componentI({ age}: { age: number}){
  return <h1>123</h1>
}

buildComponents({component:componentJ, presetProps:{name: "Jon", age: 12}}, 
                {component: componentI, presetProps:{age: 44}})
Run Code Online (Sandbox Code Playgroud)

使用此代码,我在 上出错{component: componentI, presetProps:{age: 44}},因为它错过了name,但我希望它从 中获取类型,componentI而不是从 中获取类型componentJ,就是这种情况。

typescript typescript-generics react-typescript

3
推荐指数
1
解决办法
69
查看次数

有没有办法提取 JSX 元素的 props 类型?

我的目的是从给定的 JSX 元素中提取 props,这可能吗?

这几乎是我失败的尝试......提前感谢您的帮助;)

function getComponentProps<T extends React.ReactElement>(element: T): ExtractProps<T>;

function Component({ name }: { name: string }) {
  return <h1>{name}</h1>;
}

type ExtractProps<TComponentOrTProps> = TComponentOrTProps extends React.ComponentType<infer TProps>
  ? TProps
  : TComponentOrTProps;

const componentProps = getComponentProps(<Component name="jon" />); //type is JSX.Element
Run Code Online (Sandbox Code Playgroud)

jsx typescript reactjs typescript-generics typescript-typings

2
推荐指数
1
解决办法
1817
查看次数