Смотря что вы имеете в виду под "строгой типизацией". В русскоязычной литературе так иногда называют сильную типизацию, которой TypeScript как раз не даёт.
TypeScript добавляет опционную статическую типизацию, а по факту просто производит статическую проверку типов на этапе транспиляции в JS, после которой вы получаете обычный JS код с динамической слабой типизацией. Таким образом, проверка типов в TypeScript возможна только на этапе разработки.
Проверка типов помогает программисту делать меньше ошибок. Например, если вы опечатались в имени поля, вы получите ошибку сразу же, до запуска программы:
function getStringSize(str: string): number {
return str.lenth;
}
Результат:
Property 'lenght' does not exist on type 'string'. Did you mean 'length'?
Если же аналогичная функция будет написана на JS, никакой ошибки не будет даже при выполнении, функция просто всегда будет возвращать значение undefined:
function getStringSize(str) {
return str.lenth;
}
Неправильное значение уйдёт по цепочке выполнения дальше, найти причину будет сложнее, в итоге исправление такой ошибки выйдет дороже.
Естественно, функция возвращающая длину строки это учебный пример. В реальных проектах код несколько более комплексный, и необходимость предотвращения ошибок там в разы важнее.
Пример валидации на этапе семантического анализа