# 变量声明

变量使用前必须先声明,我们可以使用 var 来声明变量。

当然我们也可以用 let const ,不过typescript已经帮我们做了变量判断,就是你使用var 定义两个相同的变量,会报错提示你已经定义过了。

所以这里使用var 也是没啥问题的。习惯使用es6语法的同学,直接写let const也是好的。

下面我们使用四种方式来声明变量:

# 1、声明变量的类型及初始值:

var [变量名] : [类型] = 值;

const uname:string = "aliwang";

注意:变量不要使用 name 否则会与 DOM 中的全局 window 对象下的 name 属性出现了重名。

# 2、声明变量的类型,但没有初始值,变量值会设置为 undefined:

var [变量名] : [类型];

let uname:string;

# 3、声明变量并初始值,但不设置类型,该变量可以是任意类型:

var [变量名] = 值;

var uname = "aliwang";

# 4、声明变量没有设置类型和初始值,类型可以是任意类型,默认初始值为 undefined:

变量如果在声明的时候,未指定其类型,那么它会被识别为任意值类型:

var [变量名];

let something;
something = 'seven';
something = 7;

something.setName('Tom'); // 这里ts编译不会报错,执行js会报错,就是原生js语法问题了

# TypeScript 遵循强类型,如果将不同的类型赋值给变量会编译错误,如下实例:

const num:number = "hello"     // 这个代码会编译错误

# 类型断言(Type Assertion)

类型断言可以用来手动改变一个值的类型,即允许变量从一种类型更改为另一种类型

语法格式: <类型>值值 as 类型

var str = '1' 
var str2:number = <number> <any> str   //str、str2 是 string 类型
console.log(str2)

TypeScript 是怎么确定单个断言是否足够 当 S 类型是 T 类型的子集,或者 T 类型是 S 类型的子集时,S 能被成功断言成 T。这是为了在进行类型断言时提供额外的安全性,完全毫无根据的断言是危险的,如果你想这么做,你可以使用 any。

它之所以不被称为类型转换,是因为转换通常意味着某种运行时的支持。但是,类型断言纯粹是一个编译时语法,同时,它也是一种为编译器提供关于如何分析代码的方法。

编译后,以上代码会生成如下 JavaScript 代码:

var str = '1';
var str2 = str;  //str、str2 是 string 类型
console.log(str2);
更新时间: 2022年7月25日星期一晚上7点25分