Кто ни будь может на пальцах объяснить с нормальными примерами, что такое assertions в typescript и где это применяется. В документации этому вопросу, уделяется несколько строк с не понятными примерами.
Вот пример:
let someValue: any = "this is a string";
let strLength: number = (someValue as string).length;
Не понятно что вообще в этом коде происходит.
В документации есть следующее:
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
или
(<string>someValue).length
В этом случае компилятор верит, что эта переменная имеет строковое значение, а значит у нее можно взять свойство length.
Продвижение своими сайтами как стратегия роста и независимости