这个问题是通用的,但为了说清楚,我将使用一个例子。
我正在使用 Nodejs 和 Tyepscript 构建应用。我需要使用 Nodejs 中的readline
。 readlines
使用界面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,但是找不到方法。
答案 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,
....
}