В настоящее время это не работает. Так как методы A[]
и B[]
имеют разные подписи, если вы поместите их в объединение, соответствующий метод будет объединением исходных подписей и, следовательно, не будет вызван.
Это ограничение будет снято в будущей версии машинописного текста, как описано здесь (возможно, в выпуске за январь 2019 года). С учетом изложенных изменений ваш пример должен работать так, как ожидалось, но в настоящее время я не проверял это.
А пока лучшее решение - использовать утверждение типа:
(arr2 as (A | B)[]) .map(e => e.x);