之间有什么区别:
type MovieType = {|
+blob?: string,
+name: string,
+url?: string
|};
和
type MovieType = $Exact<$ReadOnly<{
blob?: string,
name: string,
url?: string
}>>;
我想知道flowtype是否对待对象的方式不同,取决于它们的定义方式,或者前者只是后者的语法糖。
答案 0 :(得分:0)
这两种对象类型应该是等价的。
$ReadOnly<T>
使所有属性协变:
$ ReadOnly是一种表示a的只读版本的类型 给定对象类型T.只读对象类型是一种对象类型 键都是只读的。
这意味着以下两种类型是等效的:
type ReadOnlyObj = { +key: any, // read-only field, marked by the `+` annotation }; type ReadOnlyObj = $ReadOnly<{ key: any, }>;
$Exact<T>
获取一个不精确的对象并使其准确无误:
$ Exact&lt; {name:string}&gt;是{|的同义词name:string |},如Object文档中所示。