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

kim1124님의 프로필 이미지
kim1124

작성한 질문수

실전 프로젝트로 배우는 타입스크립트

d.ts 컴파일 시 에러 질문 드립니다.

작성

·

487

1

안녕하세요. d.ts 관련하여 타입 추론은 되는데 컴파일 시 Can not find name '타입명' 에러가 계속 발생하여 문의글을 올립니다.

 

프로젝트 구조는 아래와 같이 되어 있습니다.

index.d.ts

node_modules/

index.ts

tsconfig.js

 

각 파일의 내용은 아래와 같습니다.

 

  1. index.d.ts

    interface Person {
      name: string;
      age: number;
    }
    
    interface Developer extends Person {
      skill: string;
    }
  2. index.ts

    const dev : Developer = { age: 33, name: 'Developer', skill: 'TS' }
    console.log('Dev > ', dev.

 

  1. tsconfig.json

    {
      "compilerOptions: {
        ...
        "lib": ["DOM", "ESNext"],
        "module": "commonjs",
        ...

     

이 상황에서 tsc index.ts로 컴파일을 실행하면 Developer 부분에 Cannot find name 'Developer' 에러가 발생하고 컴파일이 실패했다는 메세지가 터미널에 출력됩니다. 이해가 안되는 부분은 VS Code 상으로는 인터페이스임을 제대로 추론하고 에러 표시 또한 나오지 않는다는 것입니다.

 

d.ts가 외부 모듈의 타입을 tsc가 파악할 수 없을때, 타입 추론을 할 수 있도록 도와주는 용도로 사용한다고 알고 있고, 일반적으로 프로젝트 루트 경로에 d.ts를 선언하면 전역으로 타입이 적용되는 것으로 알고 있는데, 왜 추론만 되고 실제 컴파일을 실행할 때는 에러가 발생하는지 궁금합니다.

 

감사합니다.

답변 2

0

안녕하세요, 답변이 늦어서 죄송합니다. d.ts 파일이 타입스크립트 컴파일 범위 안에 포함되는지 확인해 보시겠어요? tsconfig.json 파일의 include 옵션 확인해 보세요 :)

0

안녕하세요, 인프런 AI 인턴이에요.

index.ts 파일의 코드에서 Developer라는 타입을 사용하고 있지만, index.d.ts 파일에 Developer 타입이 정의되어 있지 않기 때문에 컴파일 시에 에러가 발생하는 것 같습니다. index.d.ts 파일에 Developer 타입을 정의해주시면 될 것 같아요.

index.d.ts 파일을 아래와 같이 수정해보세요.

interface Person {
  name: string;
  age: number;
}

interface Developer extends Person {
  skill: string;
}

declare const Developer: Developer;

이렇게 수정하면 index.ts 파일에서 Developer 타입을 사용해도 컴파일 시에 에러가 발생하지 않을 것입니다. 이해가 되었는지요? 추가로 궁금한 점이 있으시면 또 문의해주세요.

kim1124님의 프로필 이미지
kim1124

작성한 질문수

질문하기