입력되지 않은 npm 모듈에 대한 TypeScript 사용자 지정 선언 파일
저는 TypeScript를 사용하는 프로젝트에 npm부터 표고라는 React 컴포넌트를 사용하고 있습니다.그 라이브러리에는 TypeScript 선언이 없기 때문에 작성하려고 합니다.선언 파일은 다음과 같습니다(완전하지 않을 수 있지만 너무 걱정하지 마십시오).
import * as React from 'react';
declare module 'shiitake' {
export interface ShiitakeProps {
lines: number;
}
export default class Shiitake extends React.Component<ShiitakeProps, any> {
}
}
이걸 안에 넣었어요../typings/shiitake.d.ts
파일 및 VS Code에서 다음 오류가 나타납니다.
[ts] 증설 모듈 이름이 잘못되었습니다.모듈 'shiitake'는 'd:/dev/foo/foo/foobar'에서 타입이 지정되지 않은 모듈로 해결됩니다.클라이언트.클라이언트Web/node_modules/shiitake/dist/index.js'로 증강할 수 없습니다.
소비측에서는, 상기의 선언을 실시해도, 같은 에러가 발생하고 있습니다.noImplicitAny
컴파일러 스위치가 켜짐):
/// <reference path="../../../../typings/shiitake.d.ts" />
import * as React from 'react';
import Shiitake from 'shiitake';
[ts] 'shiitake' 모듈의 선언 파일을 찾을 수 없습니다.d:/dev/foo/foo.클라이언트.클라이언트Web/node_modules/shiitake/dist/index.js'에는 암묵적으로 '임의' 유형이 있습니다.
이러한 유형의 모듈에 대해 선언 파일을 취득하는 표준 이유는 통과되어 있으며 잘 작동합니다.하지만 맞춤 타이핑 작업을 할 수 없습니다.무슨 생각 있어?
선언문declare module 'shiitake';
글로벌 범위 내여야 합니다.즉, 비표준(여기서 모듈은 적어도1개의 최상위 레벨을 가진 파일입니다)의 최상위 선언입니다.import
또는export
).
형식의 선언declare module '...' { }
모듈 내의 는 확장입니다.자세한 내용은 "Typescript Module Augmentation"을 참조하십시오.
이 파일은 다음과 같습니다.
declare module 'shiitake' {
import * as React from 'react';
export interface ShiitakeProps {
lines: number;
}
export default class Shiitake extends React.Component<ShiitakeProps, any> {
}
}
지금까지의 경험으로 볼 때 모듈 정의 이외의 내보내기 또는 Import가 선언된 경우 정의 파일은 이 방법으로 실패합니다.자동 Import와 함께 IDE를 사용하는 경우 주의가 필요합니다.
저도 오늘 같은 문제가 있었어요.
모듈 선언 외부에 내보낸 인터페이스를 붙여넣습니다.템플릿으로 사용한 타이핑 파일은 파일 끝에 프라이빗 인터페이스가 있습니다.
따라서 내보낸 인터페이스가 모듈 선언 외부에서 선언되었습니다.드라이브 타입 스크립트 컴파일러 너트입니다.
인터페이스를 모듈 경계로 이동하자 모든 것이 수정되었습니다.
언급URL : https://stackoverflow.com/questions/42693836/typescript-custom-declaration-files-for-untyped-npm-modules
'bestsource' 카테고리의 다른 글
AngularJs UI 라우터 - 여러 URL이 있는 하나의 상태 (0) | 2023.02.23 |
---|---|
Python Json은 사전 대신 문자열을 반환()합니까? (0) | 2023.02.23 |
Wordpress 다중 사이트 설치(3.0)에서 모든 블로그 옵션 테이블을 동시에 쿼리하려면 어떻게 해야 합니까? (0) | 2023.02.23 |
테이블에서 TOP N 행을 선택합니다. (0) | 2023.02.23 |
ASP의 Date Time 포맷.시스템을 사용한NET Core 3.0Text.Json (0) | 2023.02.23 |