Typescript 将常量的泛型用作接口

Typescript 将常量的泛型用作接口,typescript,Typescript,我使用的是react intl,他们为FormattedNumber组件定义了一个类型脚本: 导出declare const FormattedNumber:React.FC; 我在我的React组件中使用它,它接受一个道具usdProps,允许您覆盖FormattedNumber组件的道具: 如何将组件的道具设置为FormattedNumber的泛型,而不复制确切的泛型 现在我可以做到: 界面道具{ usdProps?:统一数字格式选项& CustomFormatConfig&{ 值:数

我使用的是react intl,他们为FormattedNumber组件定义了一个类型脚本:

导出declare const FormattedNumber:React.FC;
我在我的React组件中使用它,它接受一个道具
usdProps
,允许您覆盖FormattedNumber组件的道具:


如何将组件的道具设置为FormattedNumber的泛型,而不复制确切的泛型

现在我可以做到:

界面道具{
usdProps?:统一数字格式选项&
CustomFormatConfig&{
值:数字;
};
}
但我更希望它与格式化的数字直接耦合(假示例):

界面道具{
usdProps?:格式化数字的通用性;
}

您希望提取组件的道具,以便在您自己的组件中使用它。但是没有办法做到这一点

由于props是使用泛型类型
声明的,如果您想使用它,您需要以相同的方式声明它

要获得相同的结果,可以将其声明为类型:

type FormattedNumberProps = UnifiedNumberFormatOptions & CustomFormatConfig & { value: number; };
并在您的界面上使用它:

interface Props {
  usdProps?: FormattedNumberProps;
}

假设类型
React.FC
取决于其泛型类型参数
T
(即,它实际使用的是
T
,而不是),那么您应该能够使用从
React.FC
中提取
T
,如下所示:

interface Props {
    usdProps?: typeof FormattedNumber extends React.FC<infer T> ? T : never
}
界面道具{
usdProps?:格式化数字的类型。FC?T:从不
}
您可以验证此类型是否与手动版本相同

好吧,希望这会有帮助;祝你好运


这正是我想要的。谢谢你的回答和链接!