Как Typescript является необязательным статически типизированным языком?
В этой статье мы рассмотрим статическую типизацию в машинописном тексте и то, что делает язык опционально статически типизированным.
TypeScript — это строго типизированный язык программирования, основанный на JavaScript. TypeScript позволяет указывать типы данных, передаваемых в коде, и имеет возможность сообщать об ошибках, когда типы не совпадают.
Что такое статически типизированный язык?
В статически типизированном языке проверка типов происходит во время компиляции. Компилятор принуждает значение использовать тот же тип. Давайте посмотрим на пример, который действителен в javascript.
let value = 5 value = "Hello World"
Выход:
Error: Type "string" is not assignable to type "number".
Тип значения меняется с числа на строку. Это запрещено в TypeScript.
Как Typescript может быть статически типизирован?
Typescript позволяет присвоить тип переменной. Typescript также может определить тип на основе инициализации переменной. Может быть случай, когда мы хотим сохранить значение в переменной, но не знаем ее тип во время написания программы. В этом случае мы хотим, чтобы компилятор отказался от проверки типов и передал значение без ошибок. Typescript имеет любой тип, что позволяет нам хранить значения любого типа и пропускать проверку типов.
Пример 1:
Typescript
let value: any = 5; console.log(value); value = "hello" ; console.log(value); |
Выход:
5 hello
Здесь значение может быть изменено с числового типа на строковый без какой-либо ошибки компиляции. Он указывает компилятору пропустить проверку типов.
Пример 2:
Typescript
function add(a: any, b: any): any { if ( typeof a === "number" && typeof b === "number" ) { return a + b; } if ( typeof a === "string" && typeof b === "string" ) { return a.concat(b); } } console.log(add(3,6)); console.log(add( "Hello" , "TypeScript" )); |
Выход:
9 HelloTypeScript
В этом примере функция add() будет вычислять сумму переданных значений, если они являются числами. Если это строка, функция add() объединит их в одну строку.
Это свойство машинописи противоречит определению статически типизированного языка программирования. Поэтому TypeScript также называют опционально статически типизированным языком.