Используя PhpStorm и пытаясь найти правильный PHPDoc для метода, который может принимать строковую строку, или общий массив array, или очень конкретную ассоциативную связь массив массив {sourceType: строка, лотыOfOptionKeys?: строка. Инстинктом было объединить их с помощью |, который работает для строки, числового массива строк и очень специфической структуры, но общий массив array, похоже, всегда запускает конкретную проверку формы, которая затем помечает это как ошибку.
В итоге докблок выглядит вот так
/**
* @param string | array | array{
* sourceType: string,
* lotsOfOptionKeys?: string
* } $options
*/

это работает:
method('thisIsAString');

то же самое:
method(['a', 'b', 'c']);

и вот это:
method(['sourceType' => 'asdfasd', 'lotsOfOptionKeys' => 'asfd']);

но выдает ошибку и говорит, что это должен быть один из sourceType...:
method(['a' => 'AAA', 'b' => 'BBB']);
Подробнее здесь:
https://stackoverflow.com/questions/790 ... -structure