gpt4 book ai didi

json - 如何获得 Flow 类型检查器覆盖的 JSON.parse 结果?

转载 作者:行者123 更新时间:2023-12-04 08:40:39 26 4
gpt4 key购买 nike

我刚开始使用流程。我试图在一个项目中获得尽可能接近 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返回 any .这是签名:

static parse(text: string, reviver?: (key: any, value: any) => any): any;

Flow 不能保证将解析结果分配给类型 ExampleType是正确的,因为谁知道解析传入的 JSON 时会出现什么?

但是如果你用 flow-validator 解析,你可以得到 100% 的覆盖率。反而。在解析字符串时,Flow 知道该字符串可能来自任何地方。所以没有静态保证字符串中的 JSON 数据具有您期望的形状。什么流验证器提供了一个 API 来描述数据的验证模式而不是类型。在解析时在运行时检查模式。 Flow-validator 会自动从您的模式生成静态类型,并将成功解析的结果分配给该类型。以下是使用 flow-validator 的示例:
import { boolean, object } from "flow-validator"

const ExampleSchema = object({
thingOne: boolean,
thingTwo: boolean
})

const exampleVariable = ExampleSchema.parse(
'{"thingOne": true, "thingTwo": false}'
)

您可以检查并查看 Flow 为 exampleVariable 推断出正确的类型,您的流量覆盖率现在为 100%。如果 JSON 数据的形状不正确,则 ExampleSchema.parse会抛出错误。

您可以像这样从架构中获取类型:
type ExampleType = typeof ExampleSchema.type

此版本 ExampleType就像你原来的例子中的那样。自动提取类型使您不必为数据结构编写两次形状,并且还保证静态类型与运行时验证模式保持同步。

关于json - 如何获得 Flow 类型检查器覆盖的 JSON.parse 结果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47335934/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com