interface typescript extends definitelytyped

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??