Javascript:?操作员

Javascript :? operator

我不知道这是做什么的,甚至是什么。有好心人指点我要研究什么吗?

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

它是 React Native 示例的一部分,也是 React Native class 定义的一部分。外部部分是(缩写):

var NavigatorIOSExample = React.createClass({
...
circle: (null : ?{ setNativeProps(props: Object): void }),
...
});

我认为这是对三元运算符的一些巧妙使用。一个匿名函数。但是?

来源:https://facebook.github.io/react-native/docs/panresponder.html

声明的语法来自Flow。它说 'circle' 是一个带有 属性 的对象,它是一个名为 'setNativeProps':

的函数
{ setNativeProps(props: Object): void }

它还表示圆圈 is nullable(由前面的“?”表示)并且在指定类型的对象被分配给它之前默认值为 null。

如果您进一步查看示例,您会看到调用代码如何在调用 setNativeProps 之前检查是否已分配圆:

this.circle && this.circle.setNativeProps({
    backgroundColor: CIRCLE_HIGHLIGHT_COLOR
});