什么是这种奇怪的三元运作?

Chr*_*eaf 1 javascript syntax flowtype

我一直在阅读Flux库源代码,在一些地方我看到了这种表示法:

?: ?
Run Code Online (Sandbox Code Playgroud)

我不确定这是否是三元运算符的奇怪用法,或其他完全不同的东西.

FluxContainer.js文件的第245行开始的函数声明中可以找到几个混淆使用此例的好例子:

function createFunctional<Props, State, A, B>(
    viewFn: (props: State) => React.Element<State>,
    getStores: (props?: ?Props, context?: any) => Array<FluxStore>,
    calculateState: (prevState?: ?State, props?: ?Props, context?: any) => State,
    options?: Options,
): ReactClass<Props> {
    /** Omitted Implementation Details **/
};
Run Code Online (Sandbox Code Playgroud)

这里发生了什么,比如在props?: ?Props

Min*_*our 6

这是一种式表示法.

param?: ?Type符号意味着param是一个可选参数,并且Type是一个可能键入.它基本上接受Type加号undefinednull.