在TypeScript中绕过所需​​的模块

时间:2016-05-07 16:31:04

标签: typescript

有时,当我使用新版本的节点包时,我找不到更新的类型定义文件。例如,我无法找到Mongoose的最新类型定义文件。所以当我尝试使用它时会出错。所以我试图想办法绕过我从这一行得到的错误:

import mongoose = require("mongoose");

错误为Cannot find module 'mongoose'。我如何告诉TypeScript编译器和Visual Studio,我已经加载了模块,我只是没有它的类型定义?

2 个答案:

答案 0 :(得分:2)

您可以write a declaration file为TypeScript提供外部库的类型定义。由于这是一个npm模块,因此您应该使用declare module 'modulename' { }语法:

declare module 'mongoose' {
    var mongoose: any; // probably want to make this more specific
    export = mongoose;
}

将其放在mongoose.d.ts文件中,并将其包含在您的代码中:

/// <reference path="mongoose.d.ts" />

答案 1 :(得分:0)

你可以做一个技巧,并为图书馆添加打字。正如TypeScript定义所说的那样(http://www.typescriptlang.org/docs/handbook/typings-for-npm-packages.html) - 它试图在typings文件中找到package.json定义,如果定义不存在,那么它会尝试在项目库中找到index.d.ts文件

我的解决方案有点愚蠢,分叉存储库,将项目packages.json指向您的分叉存储库,添加index.d.ts文件,其中包含一些“模拟”类型。