카테고리 없음
'(string | null)[]' 형식의 인수는 'SetStateAction<string>' 형식의 매개 변수에 할당될 수 없습니다.
ecoEarth
2023. 8. 18. 03:25
const validateCertificate = (password: string) => {
if (password.trim() === '') {
return null;
}
if (certificationNum === password) {
return 'pass';
}
return 'fail';
};
const handleSmsVerification = () => {
setSmsVerification([
validateCertificate(certificatedNumText),
'인증번호가 일치하지 않습니다.',
]);
};
핸드폰 문자인증에서 문자가 올바르게 인증되었는지 확인하는 로직이고, 이렇게 set된 state를 하위 컴포넌트에게 넘겨주려 했다.
그런데 다음 코드에서 타입오류가 났다. 알고보니, useState에는 빈 문자열을 초기값으로 전달했는데 실상 배열을 설정해주고있으니, 타입에러가 났던 것이다.
const [smsVerification, setSmsVerification] = useState<['pass' | 'fail' | null, string]>([null, '']);
다음과 같이, 설정될 수 있는 값을 제네릭에 포함시켜준 후 initialState도 타입에 맞게 설정해주면 해결된다.