问题是通用的,但是要清楚我将使用一个例子。
我正在使用 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扩展到我的应用程序代码中的某个地方,但找不到方法。
您只需创建一个新的文件,该文件重新限制模块和接口,只添加丢失的属性。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,
....
}