【发布时间】:2023-04-07 04:32:01
【问题描述】:
我不熟悉使用流程。我试图在一个项目中获得尽可能接近 100% 的流量覆盖率,而我不知道如何处理的一件事是 JSON.parse。
type ExampleType = {
thingOne: boolean,
thingTwo: boolean,
};
const exampleVariable: ExampleType = JSON.parse(
'{thingOne: true, thingTwo: false}'
);
所以我有一个类型,我从另一个来源收到一个字符串,我解析它并期望它是那个类型。
整个JSON.parse(...) 部分被标记为“未被流量覆盖”。
如果在该文件中使用JSON.parse,有没有办法让该文件达到 100% 流量覆盖?如何?当它说那条线没有被覆盖时,流到底是在说什么?
【问题讨论】:
-
它无法判断你的分配是否真的有效。
-
静态(!)代码检查工具无法检查运行时发生的任何事情。
JSON.parse的结果是mixed,因为它不能静态确定。 -
所以没有办法在带有
JSON.parse的文件中获得100% 的覆盖率,因为流无法知道被解析的字符串是否会导致正确的类型? -
是的,您必须为 RUNTIME 检查添加代码,Flow 会将其识别为类型细化。 flow.org/en/docs/lang/refinements
-
无论如何 - “100% 覆盖率”就像“100% 完美”,任何人即使尝试为任何不平凡的事情 也不了解宇宙是如何运作的。当你到达那里(达到 100% 完美)时,宇宙的其他部分已经死了。玩一些《星际争霸 II》,从你身上获得“完美”的想法(有利于实际完成工作)。