JavaScript中的:?运算符

3

我无法弄清楚这是什么或者它的作用是什么。请问有没有好心人能指点我应该研究什么?

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

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

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

我猜这是三元运算符的一些棘手用法。一个匿名函数。但是呢?
来源:https://facebook.github.io/react-native/docs/panresponder.html

请查看:https://dev59.com/LGkv5IYBdhLWcg3w6k5Q#10270383 - martijnn2008
5
@Quentin,我不认为这是OP想要的。null : ? ... 不是有效的 JavaScript 原生语法,而且在那篇帖子中也没有涉及到。 - James Donnelly
的确。看起来像是三元运算符(这也是我最初回答的),但它不是。奇怪……从没见过这样的写法。 - Blizz
2
不是JavaScript。可能会有一些React魔法... - hgoebl
我在这里(https://facebook.github.io/react-native/docs/navigatorios.html)和这里(https://github.com/facebook/react-native/blob/master/Examples/UIExplorer/NavigatorIOSExample.js)找不到它,请告诉我们你找到这一行的真实来源;我猜这是你的发明,否则就请提供真实来源。 - smnbbrv
显示剩余5条评论
1个回答

8
声明是来自Flow的语法。它表示'circle'是一个对象,具有一个名为'setNativeProps'的函数属性:
{ setNativeProps(props: Object): void }

它还指出圆圈 可为空(由前面的“?”表示),默认值将为 null,直到分配了指定类型的对象为止。
如果您进一步查看示例,可以看到调用代码在调用 setNativeProps 之前检查是否已分配圆圈。
this.circle && this.circle.setNativeProps({
    backgroundColor: CIRCLE_HIGHLIGHT_COLOR
});

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接