interface - Extender la interfaz definida en el archivo.d.ts
typescript extends (1)
// ¿Cómo extender la interfaz del Validator al agregar el método isArray ()?
No puede hacer esto en un archivo que es un módulo ( algunas indicaciones aquí ) y su archivo es un módulo porque tiene import expressValidator
.
En su lugar, cree un extendedValidator.d.ts
y agregue lo nuevo para el motor de TypeScript:
declare module ExpressValidator {
export interface Validator {
isArray: any;
}
}
En mi proyecto de TypeScript, utilizo definiciones DefinitelyTyped para las dependencias externas de js.
A veces puede suceder que estas definiciones estén desactualizadas. También podría suceder que algunas bibliotecas puedan agregar nuevos métodos en tiempo de ejecución, como express-validator en el que puede definir funciones de validación personalizadas.
Por lo tanto, me gustaría extender esas definiciones .d.ts
agregando nuevos métodos y / o propiedades.
Entonces, si tengo mi definición DefinitelyTyped en express-validator.d.ts
:
declare module ExpressValidator {
export interface Validator {
is(): Validator;
not(): Validator;
isEmail(): Validator;
...
}
}
¿Cómo puedo extender la interfaz de Validator
en, por ejemplo, mi 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??