TypeScript - переменные
Переменная по определению - это «именованное пространство в памяти», в котором хранятся значения. Другими словами, он действует как контейнер для значений в программе. Переменные TypeScript должны соответствовать правилам именования JavaScript -
Имена переменных могут содержать буквы и цифры.
Они не могут содержать пробелы и специальные символы, за исключением подчеркивания (_) и знака доллара ($).
Имена переменных не могут начинаться с цифры.
Перед использованием переменная должна быть объявлена. Использоватьvar ключевое слово для объявления переменных.
Объявление переменной в TypeScript
Синтаксис типа для объявления переменной в TypeScript должен включать двоеточие (:) после имени переменной, за которым следует ее тип. Как и в JavaScript, мы используемvar ключевое слово для объявления переменной.
Когда вы объявляете переменную, у вас есть четыре варианта:
Объявите его тип и значение в одной инструкции.
Объявите его тип, но не значение. В этом случае для переменной будет установлено значение undefined.
Объявите его значение, но не тип. Тип переменной будет установлен на тип данных присвоенного значения.
Не объявляйте ни значение, ни тип. В этом случае тип данных переменной будет любым и будет инициализирован значением undefined.
В следующей таблице показан допустимый синтаксис для объявления переменной, как обсуждалось выше.
S.No. | Синтаксис и описание объявления переменных |
---|---|
1. | var name:string = ”mary” В переменной хранится значение типа строка |
2. | var name:string; Переменная - это строковая переменная. Значение переменной по умолчанию не определено. |
3. | var name = ”mary” Тип переменной выводится из типа данных значения. Здесь переменная имеет тип string |
4. | var name; Тип данных переменной - любой. По умолчанию его значение не определено. |
Пример: переменные в TypeScript
var name:string = "John";
var score1:number = 50;
var score2:number = 42.50
var sum = score1 + score2
console.log("name"+name)
console.log("first score: "+score1)
console.log("second score: "+score2)
console.log("sum of the scores: "+sum)
При компиляции он сгенерирует следующий код JavaScript.
//Generated by typescript 1.8.10
var name = "John";
var score1 = 50;
var score2 = 42.50;
var sum = score1 + score2;
console.log("name" + name);
console.log("first score: " + score1);
console.log("second score : " + score2);
console.log("sum of the scores: " + sum);
Результат вышеупомянутой программы приведен ниже -
name:John
first score:50
second score:42.50
sum of the scores:92.50
Компилятор TypeScript сгенерирует ошибки, если мы попытаемся присвоить значение переменной другого типа. Следовательно, TypeScript следует строгой типизации. Синтаксис строгой типизации гарантирует, что типы, указанные по обе стороны от оператора присваивания (=), одинаковы. Вот почему следующий код приведет к ошибке компиляции -
var num:number = "hello" // will result in a compilation error
Утверждение типа в TypeScript
TypeScript позволяет изменять переменную с одного типа на другой. TypeScript называет этот процесс утверждением типа . Синтаксис заключается в том, чтобы поместить целевой тип между символами <> и поместить его перед переменной или выражением. Следующий пример объясняет эту концепцию -
пример
var str = '1'
var str2:number = <number> <any> str //str is now of type number
console.log(typeof(str2))
Если вы наведете указатель мыши на оператор утверждения типа в Visual Studio Code, он отобразит изменение типа данных переменной. В основном это позволяет утверждению от типа S к T успешно, если либо S является подтипом T, либо T является подтипом S.
Причина, по которой это не называется «приведением типов», заключается в том, что приведение типов обычно подразумевает некоторую поддержку времени выполнения, в то время как «утверждения типов» являются исключительно конструкцией времени компиляции и способом предоставления вам подсказок компилятору о том, как вы хотите, чтобы ваш код был быть проанализированы.
При компиляции он сгенерирует следующий код JavaScript.
"use strict";
var str = '1';
var str2 = str; //str is now of type number
console.log(typeof (str2));
Он выдаст следующий результат -
string
Предполагаемый ввод в TypeScript
Учитывая тот факт, что Typescript строго типизирован, эта функция не является обязательной. TypeScript также поддерживает динамическую типизацию переменных. Это означает, что TypeScript поощряет объявление переменной без типа. В таких случаях компилятор определит тип переменной на основе присвоенного ей значения. TypeScript найдет первое использование переменной в коде, определит тип, для которого он был изначально установлен, а затем примет тот же тип для этой переменной в остальной части вашего блока кода.
То же самое объясняется в следующем фрагменте кода -
Пример: предполагаемый ввод
var num = 2; // data type inferred as number
console.log("value of num "+num);
num = "12";
console.log(num);
В приведенном выше фрагменте кода -
Код объявляет переменную и устанавливает для нее значение 2. Обратите внимание, что в объявлении переменной не указывается тип данных. Следовательно, программа использует предполагаемую типизацию для определения типа данных переменной, т. Е. Она назначает тип первого значения, которое устанавливается переменной. В этом случае,num установлен на номер типа.
Когда код пытается установить значение переменной как string. Компилятор выдает ошибку, поскольку тип переменной уже установлен на число.
Он выдаст следующий результат -
error TS2011: Cannot convert 'string' to 'number'.
Область видимости переменной TypeScript
Область действия переменной указывает, где определена переменная. Доступность переменной в программе определяется ее объемом. Переменные TypeScript могут иметь следующие области:
Global Scope- Глобальные переменные объявляются вне программных конструкций. К этим переменным можно получить доступ из любого места в вашем коде.
Class Scope - Эти переменные также называются fields. Поля или переменные класса объявляются внутри класса, но вне методов. Доступ к этим переменным можно получить с помощью объекта класса. Поля также могут быть статичными. Доступ к статическим полям можно получить, используя имя класса.
Local Scope - Локальные переменные, как следует из названия, объявляются внутри таких конструкций, как методы, циклы и т. Д. Локальные переменные доступны только внутри конструкции, в которой они объявлены.
В следующем примере показаны области действия переменных в TypeScript.
Пример: область действия переменной
var global_num = 12 //global variable
class Numbers {
num_val = 13; //class variable
static sval = 10; //static field
storeNum():void {
var local_num = 14; //local variable
}
}
console.log("Global num: "+global_num)
console.log(Numbers.sval) //static variable
var obj = new Numbers();
console.log("Global num: "+obj.num_val)
При транспиляции создается следующий код JavaScript -
var global_num = 12; //global variable
var Numbers = (function () {
function Numbers() {
this.num_val = 13; //class variable
}
Numbers.prototype.storeNum = function () {
var local_num = 14; //local variable
};
Numbers.sval = 10; //static field
return Numbers;
}());
console.log("Global num: " + global_num);
console.log(Numbers.sval); //static variable
var obj = new Numbers();
console.log("Global num: " + obj.num_val);
Он выдаст следующий результат -
Global num: 12
10
Global num: 13
Если вы попытаетесь получить доступ к локальной переменной вне метода, это приведет к ошибке компиляции.
error TS2095: Could not find symbol 'local_num'.