TypeScript: вывод типов

Помню, я когда-то описывал type inference или вывод типов в Java. В TypeScript тоже есть нечто подобное

Если переменной присваивается массив, то типом переменной будет массив из элементов наиболее общего типа из всех перечисленных при инициализации:

Причём типом элементов массива становится наиболее общий тип из ПРИСУТСТВУЮЩИХ элементов в блоке инициализации. Если наиболее общий тип существует, но его нет в блоке инициализации, то он не выводится:

В этом случае лучше явно указать тип массива:

Но обратите внимание на одну особенность TypeScript: Если в случае с объединённым типом (Goblin | Daemon | Kakodaemon)[] в Ghoul были бы необходимые поля для Goblin или Daemon или Kakodaemon, то значение Ghoul можно было бы записать в этот массив:

Вывод типа работает и в обратную сторону, когда тип выражения выводится на основе типа переменной, которой присваивается это значение. Пример:

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *