#typescript
Кто ни будь может на пальцах объяснить с нормальными примерами, что такое assertions в typescript и где это применяется. В документации этому вопросу, уделяется несколько строк с не понятными примерами. Вот пример: let someValue: any = "this is a string"; let strLength: number = (someValue as string).length; Не понятно что вообще в этом коде происходит.
Ответы
Ответ 1
В документации есть следующее: Type assertions – это возможность сказать компилятору "Доверься мне, я знаю что делаю". Type assertion похож на каст в других языках программирования, но не делает каких-либо специальных проверок или преобразований. Он никак не влияет на время выполнения и добавляется только для компилятора. TypeScript надеется, что ты уже сделал все проверки, которые нужны. Далее приводится пример: let someValue: any = "this is a string"; let strLength: number = (someValue as string).length; Из-за any пример возможно не очень удачен, так как для этого типа нет проверок, какие свойства у него вызываются, и можно вызвать любое свойство, и компилятор не укажет на ошибку, с другой стороны, ide не подскажет, что у someValue есть такое свойство, как length. В случае же с type assertions, автодополнение начнет работать. Более наглядным пример может стать, если заменить any, на {}. В этом случае let someValue: {} = "this is a string"; При попытке вызвать someValue.length компилятор покажет ошибку Property 'length' does not exist on type '{}' И в этом случае использование type assertions становится понятнее: мы знаем, что в данной переменной будет строка, у которой есть свойство length и подсказываем об этом компилятору: (someValue as string).length или (someValue).length В этом случае компилятор верит, что эта переменная имеет строковое значение, а значит у нее можно взять свойство length.
Комментариев нет:
Отправить комментарий