Псевдоним типа Typescript позволяет Intellisense показывать имя псевдонима, а не тип источника - PullRequest
0 голосов
/ 23 сентября 2019

Рассмотрим этот короткий фрагмент кода

type A = number;

declare function f(): A;

const a = f(); // `a` is number, not A

Почему TS показывает a: number вместо a: A?

1 Ответ

1 голос
/ 23 сентября 2019

Псевдонимы типов, как следует из их названия, - это просто разные имена для других типов.Имена псевдонимов типов не являются чем-то таким, что компилятор гарантированно сохраняет (в отличие от интерфейсов), и он применяет эвристику, которая обеспечивает наилучшее взаимодействие с пользователем (в данном случае это может быть неудачным).

Кроме того, A и number по сути один и тот же тип.Если вы хотите обеспечить невозможность присвоения от number до A, вам нужно использовать фирменных типов .

type A = number & { isA: undefined};

declare function f(): A;

const a = f(); // `a` is A, not number

play

Примечание: есть также предложения ( this и this ) для маркировкиМеханизм типов встроен в машинописный текст, но на момент написания он еще не завершен.

...