Reactjs 类型脚本错误类型';字符串|未定义';不满足约束';字符串|数字|符号';
我正在使用typescript,react.Reactjs 类型脚本错误类型';字符串|未定义';不满足约束';字符串|数字|符号';,reactjs,typescript,Reactjs,Typescript,我正在使用typescript,react. 当在道具中传递xs、sm、md、lg中的一个时,我想调整每个px的大小。 我使用的记录如下,但我得到一个打字脚本错误 错误 Type 'string | undefined' does not satisfy the constraint 'string | number | symbol'. Type 'undefined' is not assignable to type 'string | number | symbol'.ts(2344
当在道具中传递xs、sm、md、lg中的一个时,我想调整每个px的大小。
我使用的记录如下,但我得到一个打字脚本错误 错误
Type 'string | undefined' does not satisfy the constraint 'string | number | symbol'.
Type 'undefined' is not assignable to type 'string | number | symbol'.ts(2344)
导出类型IconProps={
fontSize?:“xs”|“sm”|“md”|“lg”;
填充?:数字;
边距?:数字;
};
导出常量字体大小:记录={
xs:'14px',
sm:'16px',
md:'18px',
lg:'24px',
};
①
从'@chakra ui/react'导入{Icon};
从“React”导入React;
从“../theme/IconProps”导入{IconProps,FONTSIZE};
导出常量ArrowRightIcon:React.FunctionComponent=({
字体大小,
…道具
}) => {
返回(
//缩写词
);
};
此处的一个可能值是未定义的
,因为?
使其成为可选值。但是undefined
不能是对象的键,因此当您试图用这些键制作记录时,typescript会抱怨
您可以使用以下方法排除未定义的
:
export const FONTSIZE:记录={
xs:'14px',
sm:'16px',
md:'18px',
lg:'24px',
};
或者,如果您愿意,还有另一种选择:
export const FONTSIZE: Record<Exclude<IconProps['fontSize'], undefined>, string> = {
xs: '14px',
sm: '16px',
md: '18px',
lg: '24px',
};
export const FONTSIZE:记录={
xs:'14px',
sm:'16px',
md:'18px',
lg:'24px',
};
此处的一个可能值是未定义的
,因为?
使其成为可选值。但是undefined
不能是对象的键,因此当您试图用这些键制作记录时,typescript会抱怨
您可以使用以下方法排除未定义的
:
export const FONTSIZE:记录={
xs:'14px',
sm:'16px',
md:'18px',
lg:'24px',
};
或者,如果您愿意,还有另一种选择:
export const FONTSIZE: Record<Exclude<IconProps['fontSize'], undefined>, string> = {
xs: '14px',
sm: '16px',
md: '18px',
lg: '24px',
};
export const FONTSIZE:记录={
xs:'14px',
sm:'16px',
md:'18px',
lg:'24px',
};
IconProps['fontSize']
是可选的。这意味着该值可能是未定义的。但是,未定义
不能是对象
的键。您可以使用Required
排除IconProps
的未定义的情况
export const FONTSIZE: Record<Required<IconProps>['fontSize'], string> = {
xs: '14px',
sm: '16px',
md: '18px',
lg: '24px',
};
export const FONTSIZE:记录={
xs:'14px',
sm:'16px',
md:'18px',
lg:'24px',
};
IconProps['fontSize']
是可选的。这意味着该值可能是未定义的。但是,未定义
不能是对象
的键。您可以使用Required
排除IconProps
的未定义的情况
export const FONTSIZE: Record<Required<IconProps>['fontSize'], string> = {
xs: '14px',
sm: '16px',
md: '18px',
lg: '24px',
};
export const FONTSIZE:记录={
xs:'14px',
sm:'16px',
md:'18px',
lg:'24px',
};
export const FONTSIZE: Record<Exclude<IconProps['fontSize'], undefined>, string> = {
xs: '14px',
sm: '16px',
md: '18px',
lg: '24px',
};
export const FONTSIZE: Record<Required<IconProps>['fontSize'], string> = {
xs: '14px',
sm: '16px',
md: '18px',
lg: '24px',
};