我是Typescript的新手,目前正在将我们的应用程序从React JSX转换为TS,所以如果我误解了错误,请告诉我。
我在Object is possibly 'undefined'
prop
上得到了string
,该component
是从父级string
传下来的。 INITIAL_STATE
在“父级”的private static INITIAL_STATE = {
password: ''
};
中定义为
prop
这意味着子组件中password
的{{1}}绝对不能为undefined
。子组件是
interface InterfaceProps {
onlyOneLeft?: boolean;
isEnabled?: boolean;
signInMethod?: any;
onUnlink?: any;
password?: string;
passwordTwo?: string;
handleFormSubmit?: any;
handleInputChange?: any;
}
const ChildComponent = ({ password }: InterfaceProps): any => {
const regUpCase = new RegExp('^(?=.*[A-Z])');
const regLwCase = new RegExp('^(?=.*[a-z])');
const regDigit = new RegExp('^(?=.*[0-9])');
const regChar = new RegExp('^(?=.*[*@!#%&()^~{}_-])');
const pwLength = password.length >= 8;
const pwUpCase = regUpCase.test(password);
const pwLwCase = regLwCase.test(password);
const pwChar = regChar.test(password);
const pwDigit = regDigit.test(password);
const pwSpecial = pwChar || pwDigit;
const isInvalid =
!pwLength || !pwUpCase || !pwLwCase || !pwSpecial || password === '';
return isInvalid ? (
... // return when password isInvalid
) : (
... // return when password !isInvalid
);
};
ChildComponent.propTypes = {
password: PropTypes.string
};
export default ChildComponent;
在pwLength
上,我在Object is possibly 'undefined'
password
上看到prop
的错误。
在{ pwUpCase, pwLwCase, pwChar, pwDigit }
password
上的prop
上,我遇到了Argument of type 'string | undefined' is not assignable to parameter of type 'string'. Type 'undefined' is not assignable to type 'string'.
的错误
在这种情况下,我认为props
password
永远不会是undefined
,因为它在父组件中的初始state
为''
。
我还需要检查password
是否未定义吗?也许正确的方法应该是将isInvalid
移到父组件?我希望我不需要,所以任何建议都将非常有帮助。
答案 0 :(得分:1)
password
在界面上是可选的。
因此,您需要将默认值传递给password
。
赞:
const ChildComponent = ({ password = '' }: InterfaceProps): any => {
-----------------------------------^^^^