webstorm 写 nodejs,对象动态添加的的属性没有提示和自动补全怎么办

2020-12-04 08:57:42 +08:00
 zxCoder

一个波浪线在那 看着好难受

1533 次点击
所在节点    问与答
13 条回复
maocat
2020-12-04 09:07:38 +08:00
动态语言写习惯就好
zxCoder
2020-12-04 09:15:19 +08:00
@maocat 啊这 这么惨的吗 现在的 ide 不是挺智能的
zachlhb
2020-12-04 09:21:37 +08:00
@zxCoder 动态添加的属性啥 ide 都分析不出来,因为 ide 不会自己去跑你的程序,程序都没跑,当然扫描不出来你的属性
BingoXuan
2020-12-04 09:24:27 +08:00
所以 typescript 真的是個好發明
zxCoder
2020-12-04 09:25:27 +08:00
@zachlhb 没有相关工具可以实时扫描源码,比如看这个对象在哪绑定了哪些新的属性吗
zxCoder
2020-12-04 09:36:08 +08:00
@BingoXuan ts 能解决这个问题吗?好奇
noe132
2020-12-04 09:39:43 +08:00
const p = confirm()
if (p) obj[p] = 1

你来分析分析 obj 对象有啥属性
rbe
2020-12-04 09:40:32 +08:00
@zxCoder #6 ts 写了类型声明,或者从上下文能推断出类型时,就可以提示。ts 对 jsdoc 支持也很好,在 vscode 里写 js + @type 声明为 ts 类型的 jsdoc,也能做到属性提示
BingoXuan
2020-12-04 09:47:28 +08:00
@zxCoder
ts 其實就是給動態語言加上靜態分析,讓你能在編寫程序時候做好一定約束,不容易出 bug 。這也就是為什麼我認為 python3.7 才是真正的 python3,因為有提供 typing hint 來做靜態分析。
johnnyNg
2020-12-04 10:11:31 +08:00
上 ts
Immortal
2020-12-04 10:13:05 +08:00
ts ts ts
libook
2020-12-04 10:44:23 +08:00
为了提升代码可读性,也为了让 IDE 更准确识别对象结构,可以考虑把动态添加的属性做成确定性的,比如声明的时候就包含这个字段。
用注释写好 JSDoc 、ESDoc,把具备哪些属性写清楚。
或者使用 TS 的*.d.ts 文件( JS 项目也可以用),和上面方法一样都是让 IDE 知道对象有哪些属性。
如果是公共库的话,可以在 Preferences =》 Languages & Frameworks =》 JavaScript =》 Libraries 里添加相应库的声明文件,实际上和用 TS 的*.d.ts 是等价的。很多人用 idea 一开始写项目连 Node 内置 API 都会有波浪线( WebStorm 可能不会有这个情况),需要在 Preferences =》 Languages & Frameworks =》 Node.js and NPM 里勾选 Coding assistance for Node.js 。
zachlhb
2020-12-04 12:17:23 +08:00
@zxCoder 没有,扫描的都是静态属性方法,你动态添加的扫描不到

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/731969

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX