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??
// isArray()メソッドを追加してValidatorインターフェースを拡張するには?
あなたはモジュールであるファイルでこれを行うことはできません( ここにいくつかのガイダンス ) import expressValidator
。
代わりに、extendedValidator.d.ts
そして、TypeScriptのエンジンに新しいものを追加します。
declare module ExpressValidator {
export interface Validator {
isArray: any;
}
}