Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Reactjs 类型脚本错误类型';字符串|未定义';不满足约束';字符串|数字|符号';_Reactjs_Typescript - Fatal编程技术网

Reactjs 类型脚本错误类型';字符串|未定义';不满足约束';字符串|数字|符号';

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

我正在使用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)
导出类型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',
};