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

如何编写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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 22:37:01