Что нового в TypeScript 2

November 12, 2016

22 сентября вышел новый релиз TypeScript 2, получивший множество новых фич и обновление существующих возможностей

Чтобы сразу опробовать прочитанное, устанавливайте новую версию. Чтобы получить актуальную версию языка 2.0.3, выполняем:

npm i -g typescript

Теперь давайте пройдемся по новым изменениям, которые могут качественно повлиять на разработку и ваш код. И начнем мы с типов null и undefined. Дело в том, что давно идут споры о том, что плохая практика пользоваться null типами. В новой версии добавили жесткий контроль за такими типами, и теперь вы можете даже четко разделять null от undefined.

В TypeScript есть два специальных типа, null и undefined, чьими значения являются null и undefined соответственно. Раньше отсутствовала возможность явно дать имена этим типам, но теперь null и undefined могут использоваться как типы независимо от режима работы компилятора.

Ранее компилятор считал, что null и undefined могут быть присвоены любому типу. Фактически null и undefined были допустимыми значениями для любого типа, и было невозможно намеренно исключить их (и, как следствие, невозможно обнаружить ошибочное их использование).

Флаг --strictNullChecks позволяет переключить компилятор в новый режим строгой проверки null-типа.

В режиме strictNullChecks значения null и undefined уже не являются подтипами составных типов и могут быть значениями только самих себя и any.

Поэтому, несмотря на то что T и T | undefined считаются синонимами в обычном режиме (т.к. undefined является подтипом для любого T), они становятся разными типами в строгом режиме, и только T | undefined разрешает undefined значения. Эти же правила истины для пары T и T | null.

Статью целиком читайте в журнале «Системный администратор», №11 за 2016 г. на страницах 60-63.

PDF-версию данного номера можно приобрести в магазине.

Comments

comments powered by Disqus