.d.ts 文件中定义的扩展接口

.d.ts 文件中定义的扩展接口

问题描述:

在我的 TypeScript 项目中,我对外部 js 依赖项使用 DefinitelyTyped 定义.

In my TypeScript project, I use DefinitelyTyped definitions for external js dependencies.

有时这些定义可能已经过时.也可能会发生某些库在运行时添加新方法的情况,例如 express-validator可以定义自定义验证器函数.

Sometimes it might happen that these definitions are outdated. It might also happen than some libraries can add new methods at runtime, like express-validator in which you can define custom validator functions.

因此,我想扩展那些 .d.ts 定义,添加新的方法和/或属性.

Therefore I would like to extend those .d.ts definitions adding new methods and/or properties.

因此,如果我在 express-validator.d.ts 中有我的绝对类型定义:

So if I have my DefinitelyTyped defininiton in express-validator.d.ts:

declare module ExpressValidator {
  export interface Validator {
    is(): Validator;
    not(): Validator;
    isEmail(): Validator;
    ...
  }
}

如何在例如我的 application.ts 中扩展 Validator 接口?

how can I extend Validator interface within, for example, my application.ts ?

///<reference path='../typings/tsd.d.ts' />

import expressValidator = require('express-validator');
export var app = express();

app.use(expressValidator({
    customValidators: {
        isArray: function(value) {
            return Array.isArray(value);
        }
 }
}));

// How to extend Validator interface adding isArray() method??

//如何扩展Validator接口添加isArray()方法??

// How to extend Validator interface adding isArray() method??

不能在作为模块的文件中执行此操作 (此处提供一些指导) 并且您的文件是一个模块,因为您有 import expressValidator.

You cannot do this in a file that is a module (some guidance here) and your file is a module because you have import expressValidator.

而是创建一个 extendedValidator.d.ts 并为 TypeScript 的引擎添加新内容:

Instead create a extendedValidator.d.ts and add the new stuff for TypeScript's engine:

declare module ExpressValidator {
  export interface Validator {
     isArray: any;
  }
}