programing

타이프스크립트:npm 모듈의 로컬 유형 선언 파일 사용 방법

shortcode 2022. 8. 30. 22:36
반응형

타이프스크립트:npm 모듈의 로컬 유형 선언 파일 사용 방법

TypeScript 코드에 입력이 없는 NPM JavaScript 모듈을 포함시키고 싶습니다.

import createPersist = require('vuex-localstorage');

이 때문에 컴파일러는 다음과 같이 불평합니다.

error TS7016: Could not find a declaration file for module 'vuex-localstorage'. '<path>\node_modules\vuex-localstorage\dist\index.js' implicitly has an 'any' type.

이 문제를 해결할 수 있는 한 가지 방법은 설정입니다."noImplicitAny"로.false내 안에서tsconfig.json하지만 이건 원하지 않아나는 무엇이 더 이상 타이프 체크되지 않았는지 알고 싶다.

그래서 저는 최소형 선언문을 작성했습니다.vuex-localstorage프로젝트 디렉토리에 저장했습니다.

interface PersistOptions {
    namespace?: string;
    initialState?: any;
    provider?: any;
    serialize?: (data:any) => string;
    deserialize?: (str:string) => any;
    expires?: number;
    merge?: (args:any[]) => any;
    reducer?: (state:any, paths:string[]) => any;
    paths?: string[];
}

declare function createPersist(options: PersistOptions): any;

export = createPersist;

하지만 나는 여전히 같은 오류를 가지고 있다.TypeScript 컴파일러가 내 타입 선언 파일을 인식하도록 몇 가지 작업을 시도했지만 아무 일도 일어나지 않았습니다.

그럼 어떻게 해야 하죠?

컴파일러가 작성한 내용이 해당 모듈을 위한 것임을 알 수 있도록 도와야 합니다.

이것을 시험해 보세요.

declare module 'vuex-localstorage' {
    interface PersistOptions {
        namespace?: string;
        initialState?: any;
        provider?: any;
        serialize?: (data: any) => string;
        deserialize?: (str: string) => any;
        expires?: number;
        merge?: (args: any[]) => any;
        reducer?: (state: any, paths: string[]) => any;
        paths?: string[];
    }

    function createPersist(options: PersistOptions): any;

    export = createPersist;
}

이 선언 파일이 tsconfig.json에 포함되어 있는지 확인하는 것을 잊지 마십시오.

언급URL : https://stackoverflow.com/questions/42559742/typescript-how-to-use-local-type-declaration-file-for-npm-module

반응형