2017-11-20 7 views
0

질문은 일반적인 내용이지만 명확하게하기 위해 예제를 사용할 것입니다.Typescript - @types 모듈에 정의 된 유형 정의를 확장하는 가장 안전하고 올바른 방법은 무엇입니까

NodejsTyepscript으로 앱을 만들고 있습니다. readlineNodejs에서 사용해야합니다. readlinesReadLineOptions 인터페이스를 사용합니다.

npm install @types/node --save-dev 명령을 통해 유형을 설치했습니다. 내가 유형의 정의는 내가 필요로하는 하나의 속성, 즉 crlfDelay 부족한 것을 발견 ReadLineOptions를 사용하여 시작하면 이것은 (유형 데프의 현재 버전) 설치됩니다 ReadLineOptions의 유형 정의

export interface ReadLineOptions { 
    input: NodeJS.ReadableStream; 
    output?: NodeJS.WritableStream; 
    completer?: Completer | AsyncCompleter; 
    terminal?: boolean; 
    historySize?: number; 
} 

입니다. 이 문제를 극복하기 위해

, 나는 @types/node/index.d.ts

내가 강력하게이 같은 일을 할 수있는 가장 올바른 방법이 아니라고 의심 파일을 변경 ReadLineOptions의 유형 정의에 crlfDelay 속성을 추가했습니다. 나는 어딘가에 내 앱 코드에서 타입 def를 확장하는 방법을 선호하지만, 길을 찾지는 못했다.

답변

1

모듈과 인터페이스를 다시 선언하고 누락 된 속성 만 추가하는 새 파일을 만들면됩니다. Typescript는 자동으로 인터페이스 정의를 병합하고 모든 속성을 포함하는 단일 인터페이스를 만듭니다.

// readline-augmentation.d.ts 
declare module "readline" { 
    export interface ReadLineOptions { 
     crlfDelay?: number; 
    } 
} 

// test.ts 
import * as rd from 'readline' 

var d : rd.ReadLineOptions = { 
    crlfDelay : 10, 
    .... 
}