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

查看 60|回复 2
作者: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 程序员,所以想听听大家对这个东西怎么看。
我自己的想法:
它的设计是,你需要类型检查你就标注,你不需要类型检查就不标注。这其实就兼顾了写代码的顺畅感和可靠性。但是是否真的所有函数需要手动标注类型,或者说手动标注类型的比例有多大,这是个问题。一些高阶函数我也不知道怎么标注类型。

number, ret, const, arr

CHTuring   
问题是,为啥不在开发时就就避免错误或给出有效报错信息,甚至要手动标注。
TS:你们是不是在找我...
codehz   
@CHTuring 看介绍实际上是支持 ts 的
运行时检查还是不太一样的吧,不过说到底也只是给开发阶段用的,ts 好好写能避免第一方的类型问题,但项目不可避免的会引入第三方代码或一些难以在 ts 框架下描述的类型,用了 any 一类的逃生仓,就有可能出现运行时类型不符合预期的情况
您需要登录后才可以回帖 登录 | 立即注册

返回顶部