2017-11-20 10 views
0

質問は一般的ですが、私は例を使用することにします。Typescript - @typesモジュールで定義された型定義を拡張する最も安全で最も正しい方法はどれですか

NodejsTyepscriptでアプリを作成しています。私はreadlineNodejsから使う必要があります。 readlinesは、インターフェイスReadLineOptionsを使用します。

私はコマンドnpm install @types/node --save-devでタイプをインストールしました。これは私がReadLineOptionsを使用して起動すると、私は型定義は、私が必要とする一つの特性、すなわちcrlfDelayを欠いていることを発見(型DEFの現在のバージョンで)

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

インストールされるReadLineOptionsの型定義です。

問題を克服するために、私は強く、これはそのようなことを行うには、最も正しい方法ではないと思われるファイル@types/node/index.d.ts

を変更ReadLineOptionsの型定義にcrlfDelayプロパティを追加しました。私は、アプリケーションコードのどこかに型定義を拡張するメソッドを持つことを好むが、方法を見つけることができませんでした。

答えて

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, 
    .... 
} 
関連する問題