TypeScript 变量

TypeScript 变量

变量是“内存中的命名空间”,用于存储值。换句话说,它在程序中充当值的容器。TypeScript变量必须遵循JavaScript的命名规则-

  • 变量名可以包含字母和数字。

  • 不能包含空格和特殊字符,除了下划线(_)和美元($)符号。

  • 变量名不能以数字开头。

变量在使用前必须先声明。使用 var 关键字声明变量。

TypeScript中的变量声明

在TypeScript中声明变量的类型语法是在变量名后面加上冒号(:),然后跟上变量的类型。与JavaScript一样,我们使用 var 关键字来声明变量。

声明变量时,有四种选项-

  • 在一个语句中声明其类型和值。

TypeScript 变量

  • 申明变量类型但不初始化值。在这种情况下,变量的值将被设定为 undefined。

TypeScript 变量

  • 声明其值,但没有类型。变量类型将设置为分配值的数据类型。

TypeScript 变量

  • 声明既没有值也没有类型。在这种情况下,变量的数据类型将是 any,并且将被初始化为 undefined。

TypeScript 变量

下表说明了上述讨论的变量声明的有效语法 –

序号 变量声明语法和描述
1. var name:string = ”mary” 此变量存储了一个字符串类型的值
2. var name:string; 此变量是一个字符串变量。默认情况下,变量的值设置为undefined
3. var name = ”mary” 变量的类型由值的数据类型推断得出。在这里,变量的类型为字符串
4. var name; 变量的数据类型是any。默认情况下,它的值设置为undefined。

示例: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 被设置为数字类型。

  • 当代码尝试将变量的值设置为字符串时,编译器会抛出错误,因为变量的类型已经设置为数字。

它将生成以下输出 –

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

TypeScript 变量作用域

变量的作用域指定变量的定义位置。变量在程序中的可用性取决于其作用域。TypeScript 变量的作用域可以是以下范围:

  • 全局作用域 - 全局变量在编程结构之外声明。这些变量可以在代码的任何地方访问。

  • 类作用域 - 这些变量也被称为 字段 。字段或类变量在类内部但方法之外声明。可以通过类的对象访问这些变量。字段也可以是静态的。可以使用类名访问静态字段。

  • 局部作用域 - 局部变量,顾名思义,是在方法、循环等结构内声明的。局部变量只能在声明它们的结构内部访问。

以下示例说明了 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'.

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程