gpt4 book ai didi

javascript - 使用 Flow 定义对象字面量

转载 作者:行者123 更新时间:2023-11-30 14:55:18 26 4
gpt4 key购买 nike

我正在尝试定义这个对象:

let apiFormatted: {"barcode": number, "id": number}  = {"barcode": this_barcode.barcode, "id": this.props.currentJob}

我从 Flow 得到的错误是:

Flow: object literal. This type is incompatible with object type

我也尝试过 {[string]: number, [string]: number} 但没有成功。我是 Flow 的新手,如有任何帮助,我们将不胜感激。

最佳答案

首先,关于流程的一些话:

flowtype 是一个类型检查器。这意味着它会检查您是否按照声明它们的方式使用变量。这有两个好处:

1) 写代码的时候可以发现错误,执行的时候不会出现错误,这让你的代码更加防弹

2) 它使代码更具可读性,因此其他人更容易理解代码并且您可以在团队中工作。

唯一的缺点是您需要输入更多内容。然而,flow 推断 大部分类型,这意味着它会检查类型,即使您没有告诉它。因此

let obj = {barcode : this_barcode.barcode, id : this.props};

实际上推断类型:

{barcode: number, id: number}

这意味着以下将不起作用:

obj.barcode = "fails"

因为流程推断出一个数字,但我试图分配一个字符串。当你想将它传递给一个函数时:

function open(barcode : {}){
console.log(barcode.id);
}

这很危险,因为你可以做到

open({});

它不会告诉您代码无法按预期工作。所以将 id 定义为属性是有意义的:

function open(barcode : { id : number }){

如果您的对象有许多被广泛使用的属性,那么定义一个 Interface 可能是个好主意。一次:

interface Barcode {
barcode : number;
id : number
}

let obj : Barcode = {barcode:1, id:2};

关于javascript - 使用 Flow 定义对象字面量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47396009/

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