如果我在Typescript中导入库类型声明。当存在编译器问题时,如何扩展该库的定义,但是如果不是这样,它将是有效的js代码?例如,validate.js类型绑定与实际实现相比非常不准确。如下图所示。
import * as validate from 'validate.js';
declare namespace validate {
Promise: any;
async: any;
}
Run Code Online (Sandbox Code Playgroud)
与猫鼬类似,我无法访问modelSchemas属性,但需要。
import * as mongoose from 'mongoose';
declare namespace mongoose {
export modelSchemas any[];
}
Run Code Online (Sandbox Code Playgroud)
因此,如果我想向现有类型添加定义只是为了关闭编译器。我怎样才能做到这一点?
Gra*_*nga 15
把更多的分型中custom-typings.d.ts的根src。
自定义类型.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[]
}
Run Code Online (Sandbox Code Playgroud)
我的模块.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");
Run Code Online (Sandbox Code Playgroud)
为什么import使用 ES5 语法 ( require)?ES6 模块及其属性是恒定的。
| 归档时间: |
|
| 查看次数: |
5866 次 |
| 最近记录: |