Я думаю, что это соответствует.never
- это подтип всех типов.Таким образом, он может быть назначен на любой другой тип.Так что, если мы можем индексировать с помощью never
без ошибок компилятора:
declare let o: never;
declare let arr: any[];
arr[o] // not error, any
Остальное зависит только от того, что можно проиндексировать.number
и object
не имеют индексных подписей, поэтому результат равен never
.string
индексируется, и результатом является string
, поэтому string[never]
равно string
.any
универсально индексируется, и результат равен any
, поэтому any[never]
равен any
.
Для массивов индексирование с помощью never
, как мы видели выше, возможно и даст нам тип элемента,поэтому эти результаты согласуются.