Typescript 将常量的泛型用作接口
我使用的是react intl,他们为FormattedNumber组件定义了一个类型脚本:Typescript 将常量的泛型用作接口,typescript,Typescript,我使用的是react intl,他们为FormattedNumber组件定义了一个类型脚本: 导出declare const FormattedNumber:React.FC; 我在我的React组件中使用它,它接受一个道具usdProps,允许您覆盖FormattedNumber组件的道具: 如何将组件的道具设置为FormattedNumber的泛型,而不复制确切的泛型 现在我可以做到: 界面道具{ usdProps?:统一数字格式选项& CustomFormatConfig&{ 值:数
导出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:从不
}
您可以验证此类型是否与手动版本相同
好吧,希望这会有帮助;祝你好运
这正是我想要的。谢谢你的回答和链接!