Может красивее и можно сделать, но в голову ничего не пришло. Разве что типы для крейтСелектора переписать, но это просто удачи.)
https://www.typescriptlang.org/play?#code/JYWwDg9g...
В любом случае, это, пожалуй, наименее геморройный и универсальный вариант.