如何在 TypeScript 定义文件中使用外部模块的类型?

Posted

技术标签:

【中文标题】如何在 TypeScript 定义文件中使用外部模块的类型?【英文标题】:How do I use an external module's types in TypeScript definition file? 【发布时间】:2017-12-08 20:23:18 【问题描述】:

我正在尝试在 TypeScript 定义文件中引用 Mongoose 类型。目前我正在使用常规的.ts 文件,这样我就可以做

import mongoose from 'mongoose'

但我希望它是一个正确的定义文件 (.d.ts)。问题是定义文件中不允许imports。所以我试过了

/// <reference types="mongoose" />
interface doc extends mongoose 
interface doc extends mongoose.Document 

/// <reference path="../../node_modules/@types/mongoose/index.d.ts" />
interface doc extends mongoose  
interface doc extends mongoose.Document 

但它们都不起作用 - 无论我使用 mongoose 还是 Mongoose。 VS Code 只是说cannot find name 'mongoose'cannot find namespace 'mongoose'

我在这里不知所措。如何在我的定义文件中使用来自外部模块的定义?

【问题讨论】:

【参考方案1】:

我认为猫鼬类型没有默认导出,这可能会导致此问题。尝试在 d.ts 文件中添加 import * as mongoose from 'mongoose'import mongoose = require('mongoose')

【讨论】:

看我的问题,定义文件中不允许导入。 我相信他们是。查看一些外部 angular d.ts 文件,例如:github.com/DefinitelyTyped/DefinitelyTyped/blob/master/types/…

以上是关于如何在 TypeScript 定义文件中使用外部模块的类型?的主要内容,如果未能解决你的问题,请参考以下文章

我应该将外部库的 TypeScript 定义文件检查到 git 中吗?

使用带有 Vue 和 TypeScript 类装饰器语法的外部定义组件

如何让 Webpack 和 Typescript 使用外部 node_module 文件夹?

如何覆盖外部 TypeScript 接口

Vue.js 自定义指令使用 TypeScript 检测点击外部元素

TypeScript 接口是不是应该在 *.d.ts 文件中定义