flow中的type vs interface indexer属性

时间:2018-06-14 21:51:50

标签: javascript flowtype

有人可以向我解释一下流程中typeinterface之间的区别是什么?我一直在网上阅读但找不到答案。

这是代码: https://flow.org/try/#0PQKgBAAgZgNg9gdzCYAoVBLAdgFwKYBOUAhgMZ5gCyeOxAJsbWAN6phgDWeAngFxgBnHAWwBzANxswAN2IwArnn7Es3SQF902fETIVqtBrQDyAIwBWLKQG0ufQcLEBdfgfqNiG9LIJgAtjTutK6BRsRmlgC8VuwCcAEASnh08uQE-MycPPwARPhCOQA0MnKK-ACMYOqFUipwOAAWhEkpaRlZ9nl4BcWyCkpgAExVNeriQA

例如,以下代码有效:

type Metadata {
  key: string;
  value: any;
}

type MetadataObj {
  [key: string]: Metadata;
}

var metadata: MetadataObj = {
  someReducer: { key: "test", value: 1 },
  anotherReducer: { key: "test", value: 2 },
};

但是这不会,并产生这个错误:

  

无法将对象文字分配给metadata,因为对象文字[1]中缺少索引器属性,但存在于MetadataObj [2]中。 (参考文献:[1] [2])

interface Metadata {
  key: string;
  value: any;
}

interface MetadataObj {
  [key: string]: Metadata;
}

var metadata: MetadataObj = {
  someReducer: { key: "test", value: 1 },
  anotherReducer: { key: "test", value: 2 },
};

我已经阅读过类似这样的帖子,但它并没有真正帮助我: https://github.com/facebook/flow/issues/3876

关于Typescript ...... https://github.com/Microsoft/TypeScript/blob/master/doc/spec.md#3.10

0 个答案:

没有答案