讨论: JS 程序员觉得 RuntimeTypeInspector.js 怎样?

332 天前
 ufo5260987423

https://runtimetypeinspector.org/ 里面说 RuntimeTypeInspector.js 配合 babel.js 等工具能够生成类型断言。这些断言将被用于在运行时,以避免错误或给出有效报错信息。

网站给出的典型案例是: 在 js 代码中手动添加类型标注如

/**
 * @param {number} a
 * @param {number} b
 */
function add(a, b) {
  return a + b;
}
/** @type {number[]} */
const arr = [10_20];
const [a, b] = arr;
const ret = add(a, b);
console.log("ret", ret);

生成

import {inspectType, youCanAddABreakpointHere, registerVariable, validateDivision, registerTypedef, registerClass} from '@runtime-type-inspector/runtime';
export * from '@runtime-type-inspector/runtime';

/**
 * @param {number} a
 * @param {number} b
 */
function add(a, b) {
  if (!inspectType(a, "number", 'add', 'a')) {
    youCanAddABreakpointHere();
  }
  if (!inspectType(b, "number", 'add', 'b')) {
    youCanAddABreakpointHere();
  }
  return a + b;
}
/** @type {number[]} */

const arr = [10_20];
const [a, b] = arr;
const ret = add(a, b);
console.log("ret", ret);

这玩意儿拿了德国 STF (主权技术基金)几十万欧元(大概),然后在 github 上面参与程度似乎也不是很高。我不是 js 程序员,所以想听听大家对这个东西怎么看。

我自己的想法: 它的设计是,你需要类型检查你就标注,你不需要类型检查就不标注。这其实就兼顾了写代码的顺畅感和可靠性。但是是否真的所有函数需要手动标注类型,或者说手动标注类型的比例有多大,这是个问题。一些高阶函数我也不知道怎么标注类型。

2140 次点击
所在节点    JavaScript
21 条回复
tedding
330 天前
@fulvaz 深有同感 最近在优化一个四五年前的项目中的部分功能( 10s 打不开一个页面。。。就离谱

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

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

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

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

© 2021 V2EX