例子代码类似如下
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 1
怎么能说没有呢
虽然没有标注,但是你可以根据使用情况和作者预期推断需要的数据形状( 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
DOLLOR 2023-09-20 20:41:39 +08:00 1
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 具体参数内容。
|