Could not find a declaration file for module 'module-name'.
Could not find a declaration file for module (모듈에 대한 선언 파일을 찾을 수 없습니다) 문제 발생
구글 스프레드시트를 연동하는 라이브러리 사용중 다음과 같은 에러가 발생했다.
자바스크립트만 지원하는 npm 모듈을 TypeScript에서 사용할 때 발생하는 오류이다.
npm 모듈 개발자가 TypeScript 타입을 지정하지 않고 자바스크립트만 지원하는 npm 모듈을 만든 경우 TypeScript에서 사용할 때 오류가 발생한다.
해당 라이브러리가 타입 정의를 지원할 경우 오류코드에 나와있는 것처럼 @types/google-spreadsheet 를 설치해도 해결되지만, 찾아보니 구글시트 라이브러리는 타입을 따로 지원해주지 않는 것 같다.
그렇다면 다음과 같은 방법으로 해결해보자.
해결방법
// src/types/index.d.ts
declare module 'module-name'
타입을 정의하는 폴더에 d.ts 파일을 만든 후 다음과 같이 선언해준다.
//import { GoogleSpreadsheet } from 'google-spreadsheet'
//from 뒤에 적힌 라이브러리명을 그대로 가져와서 적어주면 된다.
declare module 'google-spreadsheet'
만약 저렇게 적용했는데도 오류가 발생한다면 tsconfig.json에 추가로 설정해준다.
(tsconfig.node.json에도 오류가 나서 아래와 동일하게 추가해줬더니 해결되었다.)
{
"compilerOptions": {
"typeRoots" : ["./types", "./node_modules/types"]
},
}
타입루트는 본인이 만든 폴더명으로 작성해주면 된다.
'기술 > TypeScript' 카테고리의 다른 글
[우아한 타입 스크립트 with 리액트] 타입스크립트의 등장, 웹개발의 역사와 자바스크립트의 한계 (0) | 2024.07.28 |
---|---|
Interface vs Type 타입을 지정하는 또 다른 방법 (0) | 2023.12.21 |
여러 타입을 만족하는 하나의 타입, 타입 합치기(Intersection Type, union/&) (1) | 2023.12.19 |
readonly 타입 설정, 불변성을 갖도록 만들기 (0) | 2023.12.19 |
타입 축약과 타입의 확정 (Type Aliases 별칭, Narrowing, Assertion) (1) | 2023.12.18 |