How to override or extend a libary type definition in Typescript

Put additional typings in custom-typings.d.ts in root of src.

custom-typings.d.ts

import * as mongoose from "mongoose";

//augment validate.js
declare module "validate.js" {
    let Promise: any;
    function async(param: any): any;
}

//augment mongoose
declare module "mongoose" {
    let modelSchemas: mongoose.Schema[]
}

my-module.ts

import validate = require("validate.js");
import mongoose = require("mongoose");
import * as Bluebird from "bluebird";

validate.Promise = Bluebird;
mongoose.Promise = Bluebird;

let schema = new mongoose.Schema({
    name: String
});

mongoose.modelSchemas = [schema];

validate.async("foo");

Why import with ES5 syntax (require)? ES6 modules and their properties are constant.

Leave a Comment

Hata!: SQLSTATE[HY000] [1045] Access denied for user 'divattrend_liink'@'localhost' (using password: YES)