이 문제는 value의 타입이 명확하지 않아서 발생합니다.
value
useState의 초기값을 [new Date(), new Date()]로 설정했지만 타입스크립트는 value를 배열 또는 다른 타입으로 혼동하고 있어요.
useState
[new Date(), new Date()]
이를 해결하려면 useState에 제네릭을 명확히 지정하면 됩니다.
예를 들어 const [value, onChange] = useState<[Date, Date]>([new Date(), new Date()]);
const [value, onChange] = useState<[Date, Date]>([new Date(), new Date()]);
이렇게 설정하면 value는 항상 두 개의 Date 객체를 가지는 배열로 인식됩니다.
Date
그러면 value[0]?.toISOString()과 같은 코드도 안전하게 작동합니다.
value[0]?.toISOString()
만약 타입을 더 엄격하게 검사하고 싶다면 if (Array.isArray(value))를 사용해서 배열인지 확인한 후에 값을 처리하면 됩니다.
if (Array.isArray(value))
이 문제는
value
의 타입이 명확하지 않아서 발생합니다.useState
의 초기값을[new Date(), new Date()]
로 설정했지만 타입스크립트는value
를 배열 또는 다른 타입으로 혼동하고 있어요.이를 해결하려면
useState
에 제네릭을 명확히 지정하면 됩니다.예를 들어
const [value, onChange] = useState<[Date, Date]>([new Date(), new Date()]);
이렇게 설정하면
value
는 항상 두 개의Date
객체를 가지는 배열로 인식됩니다.그러면
value[0]?.toISOString()
과 같은 코드도 안전하게 작동합니다.만약 타입을 더 엄격하게 검사하고 싶다면
if (Array.isArray(value))
를 사용해서 배열인지 확인한 후에 값을 처리하면 됩니다.