1 added
1 removed
Original
2026-01-01
Modified
2026-02-26
1
<p>В TypeScript null и undefined не просто значения. Это два типа, которые состоят из одного значения. Представим, если бы TypeScript работал так же, как JavaScript. Тогда эти значения можно было бы передавать в любом месте. И неважно, что там ожидается: строка, массив и тому подобное. Это бы привело к двум результатам.</p>
1
<p>В TypeScript null и undefined не просто значения. Это два типа, которые состоят из одного значения. Представим, если бы TypeScript работал так же, как JavaScript. Тогда эти значения можно было бы передавать в любом месте. И неважно, что там ожидается: строка, массив и тому подобное. Это бы привело к двум результатам.</p>
2
<p>Возникновение ошибки "вызывается несуществующий метод". Такая проблема, например, существует в JavaScript:</p>
2
<p>Возникновение ошибки "вызывается несуществующий метод". Такая проблема, например, существует в JavaScript:</p>
3
<p>В статически типизированных языках, где null используется как общий тип для всего, проверка типов ничего не подскажет. В таком случае возникает исключение NullPointerException - одно из самых запоминающихся для всех пользователей. Поэтому код начинает обрастать проверками на null:</p>
3
<p>В статически типизированных языках, где null используется как общий тип для всего, проверка типов ничего не подскажет. В таком случае возникает исключение NullPointerException - одно из самых запоминающихся для всех пользователей. Поэтому код начинает обрастать проверками на null:</p>
4
-
<p>В TypeScript c правильной (strict) конфигурацией подобная проверка встроена, и статический анализатор ск��жет о возможной проблеме:</p>
4
+
<p>В TypeScript c правильной (strict) конфигурацией подобная проверка встроена, и статический анализатор скажет о возможной проблеме:</p>
5
<p>Чтобы ее решить, нужно написать соответствующее условие или использовать оператор ?.. Это позволяет избежать ошибок во время исполнения кода:</p>
5
<p>Чтобы ее решить, нужно написать соответствующее условие или использовать оператор ?.. Это позволяет избежать ошибок во время исполнения кода:</p>
6
<p>Это возможно благодаря выделению значений null и undefined в отдельные типы. Благодаря каждой проверке мы отсекаем не подходящее нам множество значений и получаем безопасный вызов метода. Такие проверки также называются<em>Type Guards</em>или отсечением типов (<em>Differentiating Types</em>).</p>
6
<p>Это возможно благодаря выделению значений null и undefined в отдельные типы. Благодаря каждой проверке мы отсекаем не подходящее нам множество значений и получаем безопасный вызов метода. Такие проверки также называются<em>Type Guards</em>или отсечением типов (<em>Differentiating Types</em>).</p>