Сделать TypeScript вывести псевдонимы типов - PullRequest
1 голос
/ 05 мая 2020

У меня есть псевдоним типа, представляющий собой большое объединение.

type ErrorMsg = 
  | { message: 'oops', data: number }
  | { message: 'opa' }
  | { message: 'oopsie', data: string }
  | { message: 'ouch' }
  | ...

Теперь у меня будет другое определение, использующее ErrorMsg. Для простоты предположим, что

type NumberValidator<E> = (n: number) => E | 'ok'

Проблема в том, что при работе с Validator<ErrorMsg> TypeScript действительно любит выдавать мне сообщения об ошибках, включающие весь этот союз типов, а не имя его псевдонима, если я явно не укажу псевдоним в ручной аннотации.

Есть ли какой-нибудь трюк, который может заставить TypeScript «говорить» в терминах псевдонима при создании ошибок и предполагаемых типов?

Я просто говорю о типичных Ошибки TypeScript, похожие на Argument of type Validator<long, long list> is not assignable to type Validator<another long, long list>, а также гигантские типы, присутствующие в предполагаемых типах, которые появляются при наведении курсора на определение в редакторе.

Спасибо!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...