如何为跨文件返回的User对象创建并导入JSDoc类型?
为User对象创建JSDoc类型并跨文件导入的方法
1. 在user.model.js中定义类型并导出函数
首先在模型文件里,用JSDoc的@typedef定义User类型,同时给返回该类型的getUser函数加上类型标注:
/** * @typedef {Object} User * @property {string} id - 用户唯一标识 * @property {string} name - 用户姓名 * @property {string} email - 用户邮箱 * @property {number} createdDate - 用户创建时间戳 */ /** * 获取用户对象 * @returns {User} 返回用户实例 */ function getUser() { return { id: "ASwsd122Wqwe1", name: "sam", email: "sam.joe@yahoo.uk", createdDate: 1721323231123 }; } // 导出函数供其他文件调用 module.exports = { getUser };
2. 在其他文件中导入并使用User类型
在需要使用User类型的文件里,通过JSDoc的import语法跨文件引入类型,再给变量加上类型标注:
// 导入User类型 /** @typedef {import('./user.model.js').User} User */ // 导入getUser函数 const { getUser } = require('./user.model.js'); /** @type {User} */ const user = getUser(); // 此时编辑器会识别user的类型,提供属性提示 console.log(user.name);
如果是ES模块环境(用import/export),写法类似:user.model.js里的导出改成export function getUser() { ... },其他文件导入时:
/** @typedef {import('./user.model.js').User} User */ import { getUser } from './user.model.js'; /** @type {User} */ const user = getUser();
这样不管是CommonJS还是ES模块,编辑器都能识别user的类型结构,提供代码提示和类型校验。
内容的提问来源于stack exchange,提问作者Yuri
相关产品推荐
相关产品推荐

