민프

[React][TypeScript] Type 'any' is not assignable to type 'never'. 본문

[React Error]

[React][TypeScript] Type 'any' is not assignable to type 'never'.

민프야 2023. 4. 4. 09:48

react TypeScript에서 setIsCoinList([...isCoinList, JSON.parse(message)]); 을 코딩했는데

Type 'any' is not assignable to type 'never'. 라는 에러가 났다 .

타입에러 인 것 같은데 어떻게 수정하면 좋을까?

 

JSON.parse(message)로 파싱한 데이터는 any 타입으로 추론되기 때문에 isCoinList 배열에 추가할 때 타입 에러가 발생하게 된다.

이를 해결하려면 isCoinList 배열의 타입을 명시해주어야 해야한다.

가장 간단한 방법은 useState를 사용할 때 isCoinList 배열의 초기값으로 빈 배열 []이 아닌 any[]을 명시해주는 것 이다.

하지만 이 방법은 isCoinList 배열의 요소가 any 타입으로 추론되기 때문에 타입 안정성을 보장할 수 없다.

따라서 isCoinList 배열의 타입을 정확히 지정해주는 것이 좋긴하다 예를 들어, Coin이라는 인터페이스를 만들고 이를 isCoinList 배열의 요소 타입으로 지정해줄 수 있다

interface Coin {
  id: string;
  name: string;
  price: number;
  volume: number;
}

const [isCoinList, setIsCoinList] = useState<Coin[]>([]);

이렇게 타입을 지정해주면 JSON.parse(message)로 파싱한 데이터가 Coin 타입으로 추론되어 isCoinList 배열에 추가할 수 있다

 

매번 인터페이스로 타입을 지정해줌으로 뭔가.. 귀찮지만 하다보면 확실히 react로 작업했을때랑 비교했을때 비교적 타입에러는 정말 적은 것 같다.

Comments