本节我们讲变量的声明,变量从字面意思来理解,就是可以改变的量。而从编程角度来说,变量就是内存中的命名空间,主要用于存储值,我们可以把它理解为程序中值的容器。
我们知道 TypeScript
有一个特定就是变量是强类型的,也就是说在声明变量的时候必须给这个变量指定一个类型。这与 JavaScript
不同, JavaScript
是弱类型语言,在 JavaScript
中声明变量时不需要指定类型。
声明变量的方式
在 JavaScript
中可以通过关键字 var
、 let
、 const
来声明变量,当然 TypeScript 中同样也可以。
这三种声明变量的方式各有不同,如下所示:
- 使用
var
关键字声明变量,其作用于为该语句所在的函数内, 且存在变量提升现象。 let
的声明类似于var
,但是它的作用域为该语句所在的代码块内,不存在变量提升。注意它们一个是函数内,一个是代码块内,代码块就是直接使用{}
括起来的代码。const
是let
的一个扩展,它可以防止重新分配变量,一般用来声明常量,在后面出现的代码中不能再修改常量的值。
变量命名规则
在讲如何声明变量之前,我们先来看一下 TypeScript
的变量命名规则,如下所示:
- 变量名称可以包含数字、字母、下划线
_
和美元$
符号,其他都不可以,例如a
、abc
、AA
、a_
都符合命名规范。 - 变量名不能以数字作为开头,例如
7a
就不符合变量的命名规范,而a7
是可以的。
使用关键字 var 声明变量
首先在 JavaScript
语言中我们都是使用关键字 var
来声明变量的。那么为什么在 TypeScript
中我们更偏向于使用 let
,下面我们会讲到原因。
在 TypeScript
中声明变量其实就和 JavaScript
很类似。但因为一个是强类型语言一个是弱类型语言,所以两者在声明变量的格式上会有一些不同。
在 TypeScript
中声明变量,一共有四种方式:
- 第一种,声明变量的类型及初始值,需要在变量名后面加上变量
:
和变量类型:
var [变量名] : [类型] = 值;
// 例如
var a : number = 1;
- 第二种,声明变量的类型,但是不赋初始值。在这种情况下,该变量的值默认为
undefined
:
var [变量名] : [类型];
// 例如
var a:number;
- 第三种,声明变量并赋初始值,但不声明类型,此时变量类型将被设置为any(任意类型),这种声明方式和
JavaScript
中的类似:
var [变量名] = 值;
// 例如
var a = 1;
- 第四种,不声明变量类型,且不赋初始值。在这种情况下,变量的数据类型为
any
,初始化值为undefined
:
var [变量名];
// 例如
var a;
示例:
例如我们用 4 种不同的方式分别声明 4 个不同的变量,并且输出它们的值:
// 第一种
var a:number = 100;
console.log(a);
// 第二种
var b:string;
b = 'xkd'