gpt4 book ai didi

javascript - 如何在 Flow 类型中指定一个空对象?

转载 作者:数据小太阳 更新时间:2023-10-29 05:21:11 24 4
gpt4 key购买 nike

假设我有一个可以是 JavaScript 错误对象或空对象的变量,我如何在 Flow 中指定空对象?

我在不同地方尝试过的一种可能性(例如 here )看起来像这样:

const err: Error | {||} = {};

但这会产生以下流程错误:

1: const exact: {||} = {};
^ Cannot assign object literal to `exact` because inexact object literal [1] is incompatible with exact object type [2].
References:
1: const exact: {||} = {};
^ [1]
1: const exact: {||} = {};
^ [2]

参见 it live here . ||符号显然是 $Exact<> 的简写正如解释的那样 here .所以我不明白为什么这会失败。

它的意思是我试图分配给 err 的空对象是一个“不精确的对象文字”。我知道它是一个对象字面量,实际上它与空对象的“确切对象类型”不匹配。

我不明白的是为什么它不准确。看起来非常准确,因为在运行时它是一个空对象。有人可以解释这里的逻辑和/或如何指定 err 吗?是 Error还是空对象?

最佳答案

尝试使用 $Shape<T> 指定一个没有属性的对象:

( Try )

type errOrObj = Error | $Shape<{||}>

const err: errOrObj = new Error("Blah")

const emptyObj: errOrObj = {}

const nonempty: errOrObj = {blah: 2} // Error

关于javascript - 如何在 Flow 类型中指定一个空对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50613318/

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