有时,当我使用新版本的节点包时,我找不到更新的类型定义文件。例如,我无法找到Mongoose的最新类型定义文件。所以当我尝试使用它时会出错。所以我试图想办法绕过我从这一行得到的错误:
import mongoose = require("mongoose");
错误为Cannot find module 'mongoose'
。我如何告诉TypeScript编译器和Visual Studio,我已经加载了模块,我只是没有它的类型定义?
答案 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
文件,其中包含一些“模拟”类型。