-
typescript에서 제네릭으로 파라미터 defaultValue값 설정시Typescript 2024. 1. 28. 16:50728x90
제네릭으로 파라미터 defaultValue값을 설정 했을때 발생하는 에러
import { useState } from 'react'; import { EditMode, Union } from 'types'; export const useEditMode = <T extends Union<typeof EditMode>>( defaultEditMode: T, ) => { const [isMode, setMode] = useState<T>(defaultEditMode); const handleEdit = (mode: T) => { setMode(mode); }; return { isMode, handleEdit, }; };
// Union<typeof EditMode> 타입 추론 결과 "information" | "visitMessage" | "reset"
- 해당 useEditMode에서 제네릭 T를 이용하여 defaultEditMode라는 파라미터를 받아와서 default value값을 지정 해주고 싶었는데 아래와 같은 오류가 발생한다.
Type '"reset"' is not assignable to type 'T'.
'"reset"' is assignable to the constraint of type 'T', but 'T' could be instantiated with a different subtype of constraint '"information" | "visitMessage" | "reset"'- 분명히 T를 "information" | "visitMessage" | "reset" 로 Conditional Types(조건부 타입)을 이용하여 정의 해주었음에도, 함수의 파라미터를 T라고 해주고 default value값이 무엇인지 지정 해주려고 할때 해당 에러가 발생한다.
useState에서 제네릭을 이용하여 타입을 넣어줄때 발생하는 에러
728x90'Typescript' 카테고리의 다른 글
Promise.allSettled 리턴 타입 커스텀하기 (0) 2024.06.11 Typescript에서 number타입을 조금 더 정확한 타입으로 사용하기 (0) 2024.06.05 Typescript에서 객체의 프로퍼티의 key값에 접근할때 string으로 접근 할 수 없다 (0) 2024.05.30 node.js ioc 라이브러리 inversify.js (0) 2024.01.22 typescript 리터럴 객체에 as const의 반복문 Object.entries (0) 2024.01.11