직접 타입 선언 파일 npm에 배포하기

그니·2023년 10월 15일
1

typescript

목록 보기
1/1
post-thumbnail

참고


DefinitelyTyped 이란


타입스크립트의 가장 큰 장점 중 하나 입니다. 위 링크를 통해 방문해보시면, 커뮤니티는 효과적으로 자바스크립트 프로젝트의 타입 선언과 관련하여 정의되어가고 문서화 되어있습니다.

DefinitelyTyped에 정의된 패키지의 타입 선언을 통해 해당 패키지가 기본적으로 제공하는 type을 제공 받을 수 있습니다.

yarn add --dev @types/hex-to-binary

DefinitelyTyped에 추가된 타입 선언 파일의 경우 npm에 배포 되며 이는 풀 리퀘스트를 통해 직접 추가할 수 있습니다.

직접 추가한 타입 선언 파일

DefinitelyTyped/types/hex-to-binary

DefinitelyTyped에 타입 선언 파일 풀 리퀘스트 하는 방법


참고

풀 리퀘스트 만들기 - 가이드

1. 타입스크립트 DefinitelyTyped Github 저장소 포크하기

2. types 디렉터리 내에 타입 선언 추가 하려하는 패키지 이름 으로 폴더 만든 디렉터리 추가하한 뒤, 아래 파일들 추가하기

3. index.d.ts에 타입 정의들 추가

4. <패키지 이름>-tests.ts 에 index.d.ts에 추가한 타입이 맞는지의 대한 테스트 케이스 추가

  • 어떤 표현식이 특정한 타입을 가진다고 단언하고 싶을 경우 $ExpectType 사용하면 된다.
  • 어떤 표현식이 컴파일에 실패해야하는 경우에는 @ts-expect-error 사용하면 된다.

ex) hex-to-binary-tests.ts

import hexToRgba = require("hex-to-binary");

// $ExpectType string
const binary = hexToRgba("1b2b34");

// @ts-expect-error
const binary = hexToRgba();

5. 그 외의 파일들은 옵셔널하게 추가 설정이 필요한 경우 문서를 참고하여 수정하면 됩니다.

  • tslint.json
  • tsconfig.json
  • package.json
파일 생성 라이브러리를 통해 생성하는것을 권장 합니다.
이 파일들은, npm ≥ 5.2.0 에서는 npx dts-gen --dt --name <my-package> --template module 명령으로, 
그 이하 경우에는 npm install -g dts-gen 와 dts-gen --dt --name <my-package> --template module 명령으로 만들 수 있습니다. 
dts-gen 의 모든 옵션(Option)을 보고싶으시면 dts-gen 저장소를 확인해주세요.
1. 프로젝트의 루트 경로에서 타입 선언을 추가하려 하는 패키지 이름으로 아래 명령어를 실행 합니다.
  • npx dts-gen --dt --name <my-package> --template module
2. /types/<my-package> 로 디렉터리가 생성 되었는지 확인 합니다.
3. dts-gen 라이브러리 실행 시 에러가 날 경우, 루트 경로이 빈 디렉터리를 만든 다음 실행 해보면 됩니다.
1. mkdir <my-package>
2. npx dts-gen --dt --name <my-package> --template module

6. 타입 정의가 완료 되었다면, Definition owners 를 기재해줘야 합니다.

- DT에는 특정 모듈 유형의 품질을 유지하고자 '정의 소유자' 라는 개념이 있습니다.
- 이 목록에 자신을 추가할 시 누군가 패키지에 대한 풀 리퀘스트, 
- 이슈를 만들 때 GitHub 사용자 이름을 통해 알림을 받게 됩니다.
- DT 관리자는 안정적인 시스템을 위해 기재한 사람을 신뢰하니, 가볍게 추가하지 마세요

index.d.ts

// Type definitions for hex-to-binary 1.0
// Project: https://github.com/AVVS/hex-to-binary
// Definitions by: GeunheeJung <https://github.com/geunheejung>
// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped

export = hexToBinary;

declare function hexToBinary(s: string): string;
  • dts-gen 라이브러리를 통해 생성할 경우 해당 패키지의 대한 주석은 자동으로 매칭되어 기재 됩니다.
  • Definitions by: 부분만 추가로 기재해주시면 됩니다.

7. 마지막으로 commit 후 push할 시, 자동으로 풀 리퀘스트가 생성됩니다.

  • 풀 리퀘스트 과정에서는 추가 하려 하는 타입 선언의 대한 정보를 양식에 맞춰 기재해야 합니다.
    pull-request 과정

풀 리퀘스트 진행 과정에서

  • <my-package>-tests.ts 에 작성된 테스트가 진행되며,

  • 그 외 문제가 있는 부분이 있을 경우 bot이 알려줍니다.
    pull-request 과정

    위 과정을 통해 풀 리퀘스트까지 진행한 뒤, 병합 되었다면 24시간 이내에 자동으로 @types/<my-package> 이름으로 npm에 배포 됩니다!

0개의 댓글