You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.08 16:15:17