什么`circle:(null:?{setNativeProps(props:Object):void})`的意思

时间:2017-10-07 14:43:01

标签: reactjs react-native ecmascript-6

我正在学习react native。我想了解代码Here。下面的片段对我来说似乎很奇怪。你能解释它的作用吗?

circle: (null : ?{ setNativeProps(props: Object): void })

我知道if语句如:

blabla = (if-this-is-true) ? this-should-be-used : otherwise_this

但不知道圆圈是否相同。

2 个答案:

答案 0 :(得分:2)

It Flow类型注释。 Flow是JavaScript的静态类型检查器(https://flow.org/)。

?Type语法表示变量类型为Maybe类型,因此它可以是undefinednull或接受提供的“类型”。例如?字符串意味着stringnullundefined。更多关于他的流程类型here

(null: Type)语法是类型转换表达式(link)。使用类型转换表达式,您可以断言值是某些类型或将值转换为特定类型。

在你的问题(null : ?{ setNativeProps(props: Object): void })中,null将被转换为接受的Maybe类型:

  • 使用方法setNativeProps的对象,将对象作为参数并且不返回任何内容(void类型),
  • null
  • undefined

答案 1 :(得分:2)

(x: y)是如何在流程中执行类型转换。即值x将转换为y类型。

在您的情况下,null被细化为

?{ setNativeProps(props: Object): void }

是一个具有方法setNativeProps的可空对象。此方法接受一个对象并重新运行任何内容(void)。

了解有关https://flow.org/的流量的详情。