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

VS2017中如何为动态添加属性的对象O保留原有IntelliSense并新增提示?

解决VS2017中动态添加对象属性后IntelliSense不识别的问题

嘿,我来帮你搞定这个IntelliSense的小麻烦!你不想破坏原有自动生成的提示,又要给动态加的属性补全支持,用JSDoc的类型合并就能完美解决,不用手动写那些嵌套对象的注释,步骤很简单:

具体操作步骤

  • 首先,用@typedef结合typeof自动捕获原有对象O的完整类型(包括所有嵌套属性),完全不用你手动敲:
    // 自动捕获原有对象的所有属性和嵌套结构,生成基础类型
    /** @typedef {typeof O} OriginalOType */
    
  • 接着,定义一个扩展后的类型,把你要新增的SampleProperty加进去,用交叉类型&合并原有类型:
    // 扩展基础类型,添加新属性的类型定义
    /** @typedef {OriginalOType & { SampleProperty: string }} ExtendedOType */
    
  • 最后,给对象O标注上这个扩展后的类型,之后不管是原有属性还是新增的SampleProperty,IntelliSense都能识别了:
    /** @type {ExtendedOType} */
    let O = { PropertyA: "Testing", PropertyB: {Testing: "A"} };
    // 现在给O添加属性时,IntelliSense会自动提示SampleProperty
    O.SampleProperty = "testing";
    

为什么这招好用?

typeof O会让VS自动解析出原有对象的所有结构,包括嵌套的PropertyB里的属性,完全省去了你手动写JSDoc描述复杂嵌套的麻烦。交叉类型&则把原有类型和新属性的定义合并在一起,这样IntelliSense就能同时识别原有属性和你动态添加的属性,完美保留了原来的自动提示功能。

内容的提问来源于stack exchange,提问作者Ali Hasan

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 06:53:35