Javascript 如何删除对象可能是';空';使用PropTypes.InferreProps和默认参数时出现TS2531警告?

Javascript 如何删除对象可能是';空';使用PropTypes.InferreProps和默认参数时出现TS2531警告?,javascript,reactjs,typescript,react-proptypes,Javascript,Reactjs,Typescript,React Proptypes,我有一个简单的React组件,它将两个数字相加。它是用TypeScript编写的,使用@types/prop-types 从“React”导入React; 从“道具类型”导入道具类型; 常数AddPropsTypes={ 第一:PropTypes.number, 第二:PropTypes.number }; 类型Props=PropTypes.InferProps; 常量Add:React.FC=({first=1,second=2})=>{ 返回{first+second}; }; Add.p

我有一个简单的React组件,它将两个数字相加。它是用TypeScript编写的,使用@types/prop-types

从“React”导入React;
从“道具类型”导入道具类型;
常数AddPropsTypes={
第一:PropTypes.number,
第二:PropTypes.number
};
类型Props=PropTypes.InferProps;
常量Add:React.FC=({first=1,second=2})=>{
返回{first+second};
};
Add.propTypes=AddPropsTypes;
导出默认添加;
Typescript抱怨说,
first
second
可能是'null'ts(2531),但它们有默认参数值

制作这些
PropTypes.number.isRequired
显然会使警告消失,但我不希望它们是必需的

我知道我可以在jsx中使用
{(第一个| | 1)+(第二个| | 2)}
消除此警告,但我不必两次定义默认值。目前,我忽略了线上方的以下警告:

{/*lolhttps://github.com/Microsoft/TypeScript/issues/27552
//@ts ignore*/}

有没有办法定义
PropTypes
InferProps
以便它知道默认参数值?

使用非空断言运算符


首先+第二

一个问题我发现没有为数组函数参数定义类型

const Add: React.FC<Props> = ({ first = 1, second = 2 }) => {
  return <div>{first + second}</div>;
};
const Add:React.FC=({first=1,second=2})=>{
返回{first+second};
};
怎么样

const Add: React.FC<Props> = ({ first = 1, second = 2 }: Props) => {
  return <div>{first + second}</div>;
};
const Add:React.FC=({first=1,second=2}:Props)=>{
返回{first+second};
};

const Add:React.FC=({first=1,second=2}:{
第一:PropTypes.number,
第二:PropTypes.number
}) => {
返回{first+second};
};
谢谢!我必须关闭“@typescript eslint/no non-null assertion”规则,但我完全不介意。
const Add: React.FC<Props> = ({ first = 1, second = 2 }: {
  first: PropTypes.number,
  second: PropTypes.number
}) => {
  return <div>{first + second}</div>;
};