Я читал исходный код библиотеки Flux, и в нескольких местах я вижу это обозначение:
?: ?
Я не уверен, что это странное использование тернарного оператора или что-то еще.
Несколько хороших примеров запутанного использования этого можно найти в объявлении функции, начиная с строки 245 файла FluxContainer.js:
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 **/
};
Что здесь происходит, например, в props?:?Props
?
Это обозначение типа потока.
Обозначение param?:?Type
означает, что param
является необязательным параметром и Type
может быть типом. Он в принципе принимает Type
plus undefined
и null
.