Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/475.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用流定义对象文字_Javascript_Flowtype - Fatal编程技术网

Javascript 使用流定义对象文字

Javascript 使用流定义对象文字,javascript,flowtype,Javascript,Flowtype,我正在尝试定义此对象: 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},

我正在尝试定义此对象:

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},但没有成功。我是流动新手,任何帮助都将不胜感激。

首先,关于流动的几句话:

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

1) 您可以在编写代码时发现错误,而在执行代码时不会发生错误,这使代码更加防弹

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

唯一的缺点是你需要输入更多。然而,flow推断了很多类型,这意味着即使您不告诉它,它也会检查这些类型。所以

let obj = {barcode : this_barcode.barcode, id : this.props};
实际上推断出类型:

{barcode: number, id: number}
这意味着以下各项不起作用:

obj.barcode = "fails"
当flow推断出一个数字时,我尝试分配一个字符串。 当您要将其传递给函数并执行以下操作时:

function open(barcode : {}){
  console.log(barcode.id);
}
这很危险,因为你能做到

open({});
而且它也不会告诉你代码不能正常工作。因此,将id定义为属性是有意义的:

function open(barcode : { id : number }){
如果对象有许多广泛使用的属性,那么最好定义一次:


执行
let obj={“barcode”:this_barcode.barcode,“id”:this.props}
完全正确为什么没有办法定义此类型和/或为什么它不必要?现在,我将
apiformated
传递到一个参数中,流请求一个类型。我已经这样做了:
apiformated:{}
并且它可以工作。
让apiformated:{“barcode”:number,“id”:number}={“barcode”:1,“id”:1}
完全有效。检查
this\u条形码
this.props.currentJob的类型
interface Barcode {
  barcode : number;
  id : number
}

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