如何编写JSDoc代码阻止对象添加未定义属性?有无插件可实现?
如何实现对象赋值未定义属性时触发错误
原生JSDoc的局限
原生JSDoc只是类型注释规范,本身没有强制执行类型校验的能力,没法直接让赋值未定义属性的行为触发报错。要实现这个效果,得依赖编辑器/IDE的类型检查工具或额外静态检查插件。
用VS Code + JSConfig实现
VS Code内置的TypeScript语言服务可以用来检查JavaScript文件的类型问题。只需在项目根目录创建jsconfig.json文件并开启严格模式:
{ "compilerOptions": { "strict": true, "checkJs": true } }
之后你的JSDoc代码就能触发额外属性报错:
/** * @typedef {object} User * @property {number} id * @property {string} name */ /**@type {User} */ let user = {}; // 需初始化对象,否则user为undefined时赋值不会触发检查 user.phoneNo = '123456'; // 此时VS Code会提示:类型“User”上不存在属性“phoneNo”
ESLint插件方案
可以用eslint-plugin-jsdoc配合@typescript-eslint/parser实现更灵活的检查。先安装相关依赖,再在ESLint配置中开启对应规则(比如结合类型检查限制额外属性),不过这种方式本质还是借助TypeScript的类型系统能力。
TypeScript的直接实现
如果项目可以切换到TypeScript,实现会更直接:
interface User { id: number; name: string; } let user: User = {}; user.phoneNo = '123456'; // 直接报错:类型“User”上不存在属性“phoneNo”
内容的提问来源于stack exchange,提问作者Aradhya Tiwari
相关产品推荐
相关产品推荐

