Различия var, let, const и модификатора readonly при неявном указании примитивных типов¶
После того, как было рассмотрено понятие литеральных типов, и тем самым подведена черта под примитивными типами, наступило время рассмотреть особенности var, let и const, определение которых не содержит явную аннотацию типа.
Нюансы на практике¶
Отсутствие аннотации типа у объявления переменной означает, что тип будет определен с помощью механизма вывода типов. В тот момент, когда var или let объявляется, но не инициализируется, вывод типов определяет их принадлежность к типу any. В случае с const невозможно обойтись без инициализации в момент объявления.
1 2 3 | |
Если при определении var или let аннотация типа была опущена, а присваемое значение принадлежит к примитивному типу, то вывод типа определит принадлежность на основе типа значения. Для цифр это будет тип number, для строк string и т.д.
1 2 | |
Но при аналогичной ситуации для const, вывод типов определит принадлежность не к типу значения, а к литеральному типу, представляемому этим значением.
1 2 3 | |
Поведение вывода типов для поля, объявленного с модификатором readonly, аналогично объявлению const, то есть для примитивов будет выведен литеральный тип.
1 2 3 4 5 | |
Более подробно эта тема рассматривается далее в главе Вывод типов.