HTML Diff
0 added 0 removed
Original 2026-01-01
Modified 2026-02-26
1 <p>Использование типа any в TypeScript отключает проверки типов, что не желательно. Также в наиболее строгом режиме с помощью "strict": true в tsconfig.json использование any невозможно. А это значительно повышает безопасность кода.</p>
1 <p>Использование типа any в TypeScript отключает проверки типов, что не желательно. Также в наиболее строгом режиме с помощью "strict": true в tsconfig.json использование any невозможно. А это значительно повышает безопасность кода.</p>
2 <p>При этом бывают ситуации, когда тип неизвестен, но работа с ним должна быть безопасна с точки зрения типов. Для этого в TypeScript существует дополнение к any - unknown, которое разберем в этом уроке.</p>
2 <p>При этом бывают ситуации, когда тип неизвестен, но работа с ним должна быть безопасна с точки зрения типов. Для этого в TypeScript существует дополнение к any - unknown, которое разберем в этом уроке.</p>
3 <h2>Использование типа unknown</h2>
3 <h2>Использование типа unknown</h2>
4 <p>Главное отличие unknown от any связано с проверкой типов. Тип unknown запрещает выполнять любые операции:</p>
4 <p>Главное отличие unknown от any связано с проверкой типов. Тип unknown запрещает выполнять любые операции:</p>
5 <p>Может показаться странным, что перед нами строка, но над ней нельзя выполнять строковые операции. К этому надо привыкнуть. Тип в статически типизированных языках определяется не тем, что мы видим своими глазами, а тем, как тип выводится - автоматически или через явное указание.</p>
5 <p>Может показаться странным, что перед нами строка, но над ней нельзя выполнять строковые операции. К этому надо привыкнуть. Тип в статически типизированных языках определяется не тем, что мы видим своими глазами, а тем, как тип выводится - автоматически или через явное указание.</p>
6 <p>Переменная unknown типа нужна редко - когда нужно дальше уточнить тип. Но все меняется, когда нам нужно создать функцию, которая может работать с любым входящим типом. В JavaScript распространена подобная практика:</p>
6 <p>Переменная unknown типа нужна редко - когда нужно дальше уточнить тип. Но все меняется, когда нам нужно создать функцию, которая может работать с любым входящим типом. В JavaScript распространена подобная практика:</p>
7 <p>Такую функцию можно реализовать с помощью any, но тогда мы отключим проверку типов:</p>
7 <p>Такую функцию можно реализовать с помощью any, но тогда мы отключим проверку типов:</p>
8 <p>Лучше использовать unknown, тогда TypeScript защитит от потенциальных ошибок типов:</p>
8 <p>Лучше использовать unknown, тогда TypeScript защитит от потенциальных ошибок типов:</p>
9 <p>Затем внутри тела можно выполнить нужную проверку, чтобы узнать, с чем мы работаем:</p>
9 <p>Затем внутри тела можно выполнить нужную проверку, чтобы узнать, с чем мы работаем:</p>
10 <p>В итоге instanceof работает только с конструкторами, поэтому в примере выше мы проверяем, является ли значение экземпляром класса Error.</p>
10 <p>В итоге instanceof работает только с конструкторами, поэтому в примере выше мы проверяем, является ли значение экземпляром класса Error.</p>