강의

멘토링

로드맵

Inflearn brand logo image

인프런 커뮤니티 질문&답변

강용석님의 프로필 이미지
강용석

작성한 질문수

한 입 크기로 잘라먹는 타입스크립트(TypeScript)

분산적인 조건부 타입

red line이 생기는데 왜 그런걸까요?

해결된 질문

작성

·

64

0

type Exclude<T, U> = T extends U ? never : T;//Exclude에 빨간 redline이 생기구요
Duplicate identifier 'Exclude'.ts(2300)
lib.es5.d.ts(1613, 6): 'Exclude' was also declared here.
이런 메시지가 보이느데요 제가 뭘 잘못했는지 못찾겠어요. 도움주시면 감사하겠습니다.
고맙습니다. 

답변 3

1

강용석님의 프로필 이미지
강용석
질문자

밑에 친절하게 답글을 달아 주셨는데 좀 더 구체적인 내용을 공유해서

저같이 질문하시는분이 또 안계시길 바라며..

moduleDetection

"moduleDetection": "force"

타입스크립트는 전역으로 모든걸 관리하다 보니 변수이름도 파일마다 만들어줘야되고.. 여간 귀찮을거 같은데 이럴때 전역이 아닌 로컬모듈로 취급할수있도록 만드는 옵션이 moduleDetection 이다.
"force"로 설정하면 모든 타입스크립트 파일을 로컬 모듈로 취급 된다. velog에 글을 발췌해서 공유해 드립니다.

1

이정환 Winterlood님의 프로필 이미지
이정환 Winterlood
지식공유자

안녕하세요 이정환입니다.

이 오류가 발생하는 이유는 우리 강의의 2섹션 9챕터 (타입스크립트 컴파일러 옵션 설정하기)에서 안내드리고 있는 아래의 옵션(moduleDetection)을 설정하지 않은 상태로 코드를 작성하셔서 그런 것 같습니다.

image.png

해당 챕터를 참고하셔서 옵션을 다시 설정해보시면 문제가 해결될 수 있을 듯 합니다! 만약 그래도 안된다면 다시 답글 주세요 😃

강용석님의 프로필 이미지
강용석
질문자

감사합니다.

1

안녕하세요, 인프런 AI 인턴입니다. 강용석님.

질문하신 부분에 대해서는 타입스크립트의 기본적인 타입 유틸리티와 관련된 문제입니다. Exclude는 타입스크립트에서 제공하는 기본 유틸리티 타입 중 하나입니다. 따라서 이름 충돌이 발생하여 'Duplicate identifier 'Exclude'라는 에러가 발생한 것입니다.

해결 방법

  1. 타입 이름을 변경:
    • Exclude라는 이름을 새로 생성한 타입에 사용하지 않도록 다른 이름으로 변경합니다. 예를 들어, MyExclude 같은 식으로 변경하시면 됩니다.
   type MyExclude<T, U> = T extends U ? never : T;
  1. 타입스크립트를 업데이트:

    • 타입스크립트를 최신 버전으로 업데이트하세요. 간혹 버전 차이로 인해 발생할 수 있는 이슈를 방지할 수 있습니다.
  2. 타입 정의 파일 확인:

    • lib.es5.d.ts가 프로젝트 내에 필요한 것인지, 그리고 다른 충돌 가능한 타입 정의가 있는지 확인해 보세요.

해당 문제에 대한 더 많은 정보는 공식 문서나 유사한 질문들을 통해 확인할 수 있습니다. 예전에도 비슷한 문제를 겪은 분들의 질문이 있었으니, 참고용으로 타입스크립트 기본 유틸리티 설명도 참고해 보세요.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

강용석님의 프로필 이미지
강용석
질문자

감사합니다.

강용석님의 프로필 이미지
강용석

작성한 질문수

질문하기