web-dev-qa-db-ja.com

.d.tsファイルで定義されたインターフェイスを拡張する

TypeScriptプロジェクトでは、外部js依存関係の DefinitelyTyped 定義を使用しています。

これらの定義が古くなっている場合があります。 express-validator のような一部のライブラリが実行時に新しいメソッドを追加できるため、カスタムバリデータ関数を定義できる場合もあるかもしれません。

したがって、これらの.d.ts定義を拡張して、新しいメソッドやプロパティを追加したいと思います。

express-validator.d.tsにDefinitelyTyped定義がある場合:

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

たとえば、application.ts内でValidatorインターフェイスを拡張するにはどうすればよいですか?

///<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??
27
Marco Ancona

// isArray()メソッドを追加してValidatorインターフェースを拡張するには?

あなたはモジュールであるファイルでこれを行うことはできませんここにいくつかのガイダンスimport expressValidator

代わりに、extendedValidator.d.tsそして、TypeScriptのエンジンに新しいものを追加します。

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