Typescript - 扩展@types模块

时间:2017-11-20 09:34:50

标签: typescript types

这个问题是通用的,但为了说清楚,我将使用一个例子。

我正在使用 Nodejs Tyepscript 构建应用。我需要使用 Nodejs 中的readlinereadlines使用界面ReadLineOptions

我已通过命令npm install @types/node --save-dev安装了该类型。这是安装的ReadLineOptions的类型定义(在def类型的当前版本中)

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

当我开始使用ReadLineOptions时,我发现类型定义缺少一个我需要的属性,即crlfDelay

为了解决这个问题,我已将crlfDelay属性添加到ReadLineOptions的类型定义中,更改了文件@types/node/index.d.ts

我强烈怀疑这不是做这种事情最正确的方法。我宁愿有一种方法在我的应用程序代码中的某处扩展类型def,但是找不到方法。

1 个答案:

答案 0 :(得分: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,
    ....
}