[23.07.07] Type 'TodoInterface' is not assignable to type 'never'.

희승·2023년 7월 7일

TIL

목록 보기
31/33

에러 내용

새로운 Todo를 Todo 배열에 추가하는 부분에서 오류가 났다
code
log

발생 원인

useState 선언이 잘못됐다! -> 제네릭을 선언해줘야 한다

해결 방법

code

Typescript에서 리액트 Hooks 사용하는 법

  • useState<number>() : state의 type은 제네릭 안에 지정
  • 제네릭 사용하면 좋은 경우
    • 상태가 null일 수도 있고 아닐 수도 있을 때
      export interface IUserInfo {
      	userid: string | undefined;
      	username: string | undefined;
      }
      
      const [userInfo, setUserInfo] = useState<IUserInfo | null>(null);
    • 상태의 타입이 까다로운 구조를 가진 객체 / 배열일 때 배열의 경우에는 제네릭을 명시하는 것이 좋다
      type Todo = { 
      	id: number;
      	text: string;
      	done: boolean;
      }
      
      const [todos, setTodos] = useState<Todo[]>([]);

0개의 댓글