如何将Mongoose数据库配置JavaScript代码改写为TypeScript
JavaScript 转标准可运行 TypeScript 实现
转换后完整代码
import mongoose from 'mongoose'; import userModel from './user.model'; import roleModel from './role.model'; // 定义db对象的结构类型,消除TS隐式any报错 type Database = { mongoose: typeof mongoose; user: typeof userModel; role: typeof roleModel; ROLES: readonly ["user", "admin", "moderator"]; } const db = {} as Database; db.mongoose = mongoose; db.user = userModel; db.role = roleModel; db.ROLES = ["user", "admin", "moderator"]; export default db;
核心改动说明
- 删除了冗余的
Promise = global.Promise逻辑:Mongoose 5.0及以上版本已默认适配Node.js原生全局Promise,不需要手动覆盖Promise实现,原写法还会和TypeScript的全局Promise类型产生冲突 - 将CommonJS规范的
require()导入替换为ESM标准import语法,完全对齐TypeScript的模块解析规则 - 为
db对象补充了明确的类型注解,避免TS抛出「对象不存在对应属性」的类型错误 - 对固定角色数组
ROLES做了字面量类型收窄,在业务代码里调用时能获得精准的类型提示,不会被推导为宽泛的string[]类型 - 移除了原代码中从mongoose包导入
Promise的无效写法,避免类型冲突
如果你的
user.model、role.model使用的是命名导出而非默认导出,只需要把导入语句调整为import { default as userModel } from './user.model'即可兼容原有逻辑。
内容的提问来源于stack exchange,提问作者Lila12
相关产品推荐
相关产品推荐

