例子代码类似如下
log(logObj) { const cOnsoleLogFn= this._getLogFn(logObj.level); // Type const type = logObj.type === 'log' ? '' : logObj.type; // Tag const tag = logObj.tag || ''; // Styles const color = this.typeColorMap[logObj.type] || this.levelColorMap[logObj.level] || this.defaultColor; const style = ` background: ${color}; border-radius: 0.5em; color: white; font-weight: bold; padding: 2px 0.5em; `; const badge = `%c${[tag, type].filter(Boolean).join(':')}`; // Log to the console if (typeof logObj.args[0] === 'string') { consoleLogFn( `${badge}%c ${logObj.args[0]}`, style, // Empty string as style resets to default console style '', ...logObj.args.slice(1) ); } else { consoleLogFn(badge, style, ...logObj.args); } }
1 iOCZ 2023-09-20 17:49:54 +08:00 对于脚本语言而言,就是没有。。。如果你要类型,就要额外的编译器支持。除了用 TS ,以前还有 flow 这种东西。 |
![]() | 3 codehz 2023-09-20 19:43:27 +08:00 ![]() 怎么能说没有呢 虽然没有标注,但是你可以根据使用情况和作者预期推断需要的数据形状( shape ),甚至于 flow 和 ts 都有提供自动根据使用情况推断的工具,自动的准不准确另说,但起码能用 此外即使文件是 js ,你依旧可以通过 jsdoc 来注释类型,而且 ts 是支持这样的 https://www.typescriptlang.org/docs/handbook/jsdoc-supported-types.html |
![]() | 4 lzgshsj 2023-09-20 20:31:00 +08:00 纯 js 想要使用者好懂,就需要开发者花时间写详细的 jsdoc 或者.d.ts 声明文件。编辑器和 IDE 是可以通过 jsdoc 和.d.ts 文件智能提示类型的。 |
![]() | 5 AV1 2023-09-20 20:41:39 +08:00 ![]() 0 、不像用 TS 就用 jsdoc + ts-check 1 、如何规定参数类型: https://www.typescriptlang.org/docs/handbook/jsdoc-supported-types.html#param-and-returns 不要小瞧 jsdoc ,在 vscode 里开 ts-check ,已经能达到 TS 八成功力了。 |
6 aikilan 2023-09-20 21:14:24 +08:00 楼上说的对,日常 jsdoc 也够 |
![]() | 7 subframe75361 2023-09-20 21:31:58 +08:00 ts 最有用的是类型推断和函数重载,其他的基本 jsdoc 就行 |
8 jones2000 2023-09-20 22:27:34 +08:00 f12 直接调试就能看到整个 logObj 的信息了。js 本来就是一个轻量型的开发, 一个记事本+浏览器就可以完成开发。 非要搞这么复杂, 最后还不是转成 js 执行。 |
![]() | 9 jiejiss 2023-09-21 15:27:12 +08:00 via Android jsdoc 表达能力很强。所有 ts types 功能里面,jsdoc 不支持的应该只有 declaration merging |
![]() | 10 c3de3f21 OP |
11 humbass 2023-10-04 16:13:44 +08:00 我们其实是另一种方式来解决这个问题,写一份专门的文档,来解释需要交互的 API 具体参数内容。 |