如果我在Typescript中导入库类型声明。当编译器出现问题时,如何扩展该库的定义,但它是否是有效的js代码?例如,与实际实现相比,validate.js类型绑定非常不准确。如下所示......
import * as validate from 'validate.js';
declare namespace validate {
Promise: any;
async: any;
}
与mongoose类似,我无法访问modelSchemas属性,但我需要。
import * as mongoose from 'mongoose';
declare namespace mongoose {
export modelSchemas any[];
}
因此,如果我想为现有类型添加定义只是为了关闭编译器。我怎么能这样做?
答案 0 :(得分:4)
在custom-typings.d.ts
的根src
中添加其他类型的内容。
自定义-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[]
}
我-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模块及其属性是不变的。