Учебники

TypeScript — переменные

Переменная по определению является «именованным пространством в памяти», в котором хранятся значения. Другими словами, он действует как контейнер для значений в программе. Переменные TypeScript должны соответствовать правилам именования JavaScript —

  • Имена переменных могут содержать алфавиты и цифровые цифры.

  • Они не могут содержать пробелы и специальные символы, кроме знака подчеркивания (_) и знака доллара ($).

  • Имена переменных не могут начинаться с цифры.

Имена переменных могут содержать алфавиты и цифровые цифры.

Они не могут содержать пробелы и специальные символы, кроме знака подчеркивания (_) и знака доллара ($).

Имена переменных не могут начинаться с цифры.

Переменная должна быть объявлена ​​перед использованием. Используйте ключевое слово var для объявления переменных.

Объявление переменной в TypeScript

Синтаксис типа для объявления переменной в TypeScript должен включать двоеточие (:) после имени переменной, за которым следует ее тип. Как и в JavaScript, мы используем ключевое слово var для объявления переменной.

Когда вы объявляете переменную, у вас есть четыре варианта —

  • Объявите его тип и значение в одном выражении.

Объявите его тип и значение в одном выражении.

Объявить тип

  • Объявите его тип, но без значения. В этом случае для переменной будет задано значение undefined.

Объявите его тип, но без значения. В этом случае для переменной будет задано значение undefined.

Неопределенный

  • Объявите его значение, но не тип. Тип переменной будет установлен на тип данных назначенного значения.

Объявите его значение, но не тип. Тип переменной будет установлен на тип данных назначенного значения.

любой

  • Объявите ни значение, ни тип. В этом случае тип данных переменной будет любым и будет инициализирован как неопределенный.

Объявите ни значение, ни тип. В этом случае тип данных переменной будет любым и будет инициализирован как неопределенный.

Любой и неопределенный

Следующая таблица иллюстрирует допустимый синтаксис для объявления переменных, как обсуждалось выше —

S.No. Синтаксис объявления переменных и описание
1.

var name: string = ”mary”

Переменная хранит значение типа string

2.

имя переменной: строка;

Переменная является строковой переменной. Значение переменной установлено по умолчанию как неопределенное

3.

var name = «Мэри»

Тип переменной выводится из типа данных значения. Здесь переменная имеет тип строки

4.

имя вар;

Тип данных переменной — любой. Его значение по умолчанию не определено.

var name: string = ”mary”

Переменная хранит значение типа string

имя переменной: строка;

Переменная является строковой переменной. Значение переменной установлено по умолчанию как неопределенное

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(str2)

Если навести указатель мыши на оператор утверждения типа в коде Visual Studio, отобразится изменение типа данных переменной. В основном это позволяет утверждению от типа S к T успешно, если S является подтипом T или T является подтипом S.

Причина, по которой это не называется «приведением типа», заключается в том, что приведение обычно подразумевает некоторую поддержку времени выполнения, в то время как «утверждения типа» являются просто конструкцией времени компиляции и способом предоставления подсказок компилятору о том, как вы хотите, чтобы ваш код быть проанализирован.

При компиляции он сгенерирует следующий код JavaScript.

//Generated by typescript 1.8.10
var str = '1';
var str2 = str;     //str is now of type number
console.log(str2);

Это даст следующий результат —

1

Inferred Typing в TypeScript

Учитывая тот факт, что Typescript строго типизирован, эта функция является необязательной. TypeScript также поощряет динамическую типизацию переменных. Это означает, что TypeScript поощряет объявление переменной без типа. В таких случаях компилятор будет определять тип переменной на основе присвоенного ей значения. TypeScript найдет первое использование переменной в коде, определит тип, для которого она была первоначально установлена, а затем примет тот же тип для этой переменной в остальной части вашего блока кода.

То же самое объясняется в следующем фрагменте кода —

Пример: Inferred Typing

var num = 2;    // data type inferred as  number 
console.log("value of num "+num); 
num = "12";
console.log(num);

В приведенном фрагменте кода —

  • Код объявляет переменную и устанавливает ее значение равным 2. Обратите внимание, что объявление переменной не определяет тип данных. Следовательно, программа использует предполагаемую типизацию для определения типа данных переменной, т. Е. Назначает тип первого значения, для которого установлена ​​переменная. В этом случае num устанавливается на номер типа.

  • Когда код пытается установить значение переменной в строку. Компилятор выдает ошибку, поскольку тип переменной уже установлен в число.

Код объявляет переменную и устанавливает ее значение равным 2. Обратите внимание, что объявление переменной не определяет тип данных. Следовательно, программа использует предполагаемую типизацию для определения типа данных переменной, т. Е. Назначает тип первого значения, для которого установлена ​​переменная. В этом случае num устанавливается на номер типа.

Когда код пытается установить значение переменной в строку. Компилятор выдает ошибку, поскольку тип переменной уже установлен в число.

Это даст следующий результат —

error TS2011: Cannot convert 'string' to 'number'.

Переменная TypeScript

Область действия переменной указывает, где переменная определена. Доступность переменной в программе определяется ее областью действия. Переменные TypeScript могут быть следующих областей:

  • Global Scope — Глобальные переменные объявляются вне программных конструкций. Эти переменные могут быть доступны из любого места в вашем коде.

  • Область действия класса — Эти переменные также называются полями . Поля или переменные класса объявляются внутри класса, но за пределами методов. Эти переменные могут быть доступны с помощью объекта класса. Поля также могут быть статическими. Статические поля могут быть доступны с помощью имени класса.

  • Локальная область действия. Локальные переменные, как следует из названия, объявляются в конструкциях, таких как методы, циклы и т. Д. Локальные переменные доступны только внутри конструкции, в которой они объявлены.

Global 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

Если вы попытаетесь получить доступ к локальной переменной вне метода, это приведет к ошибке компиляции.