Что значит восклицательный знак в программировании
Перейти к содержимому

Что значит восклицательный знак в программировании

  • автор:

TypeScript: восклицательный знак

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

Синтаксис

Восклицательный знак ставится после имени переменной и перед точкой, когда мы обращаемся к свойствам объекта:

Зачем это нужно?

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

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

Пример использования

В примере выше, мы создали интерфейс User с опциональным полем email . В функции getEmail мы используем восклицательный знак, чтобы указать, что значение email точно будет определено.

Важное замечание

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

Альтернативы восклицательному знаку

Если вы не уверены в том, что значение переменной гарантированно определено, рассмотрите использование других подходов, предоставляемых TypeScript для работы с возможными null или undefined значениями.

Оператор объединения с null (??)

Оператор объединения с null позволяет задать значение по умолчанию, которое будет использовано, если значение переменной равно null или undefined :

Оператор опциональной цепочки (?.)

Оператор опциональной цепочки позволяет безопасно обращаться к свойствам объекта, которые могут быть null или undefined , вернув значение undefined , если это происходит:

Заключение

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

Зачем нужен восклицательный знак при объявлении переменной TS?

тк он явно не является частью названия переменной, также не думаю, что он говорит о том, что переменная не может быть равна null | undefined:

  • Вопрос задан более года назад
  • 2123 просмотра

Простой 1 комментарий

  • Facebook
  • Вконтакте
  • Twitter

Aetae

Моя реакция когда я вижу всё это новомодное дерьмо: dac8bf2dd74caed70a595b6188b805bd.jpg

Что означает два восклицательных знака "!!" перед выражением?

Что означает, когда пишут два восклицательных знака перед переменной или любым другим выражением? Например:

  • приведение типов
  • JavaScript

Аватар пользователя Ivan Gagarinov

Прежде всего давайте вспомним что вообще делает восклицательный знак в обычных ситуациях. Он является логическим оператором "не". Простой пример, проверяем что выражения между собой равны:

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

То есть мы "перевернули" (инвертировали) проверку. Примерно то же самое происходит, когда мы добавляем восклицательный знак перед любым выражением:

Обратите внимание, перед myVar стоит восклицательный знак, это отрицание, то есть можно прочитать это как "не myVar". Восклицательный знак инвертирует наше выражение, которое является строкой 'test'. Но тут возникает вопрос: а что является не строкой 'test'? Если подойти к вопросу философски, то можно найти бесконечное множество вещей, которые являются не строкой 'test'. Но у интерпретатора JS на этот счёт есть чёткое правило: он вычисляет выражение справа от восклицательного знака так, чтобы получить либо true , либо false , то есть приводит к булевому типу. Строка 'test' приводится к булевому типу и вычисляется как true , а восклицательный знак инвертирует, то есть переворачивает true на false , так как false является противоположностью true .

Теперь гораздо легче понять что делают два восклицательных знака:

Интерпретатор пытается вычислить сначала !content . Если content будет ложным выражением, то вычислится true , если истинным, то false . А второй восклицательный знак переворачивает true на false , а false на true . В итоге, если контент существует, то функция вернёт true , а если не существует, то false .

Теперь возникает вопрос: зачем вообще это нужно? Это делается чтобы мы всегда работали с определённым типом. Такой хитрый способ позволяет нам добиться чтобы функция всегда возвращала булевый тип. Любое значение будет преобразовываться в этот булевый тип. Это называется приведение типов.

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

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