前情:华为手机在nxet版本中将剥离AOSP,无法使用Android app,作为Android开发为鸿蒙手机app开发做准备。
TypeScript学习
1.基础类型
1.1 boolean类型
let check:boolean=false;
1.2 number类型
let size:number=6;
1.2 string类型
let name:string='Mr.Li'
let age:string="12"
1.4 array类型
let list:number[]=[1,2,3]
let list2:Array<number>=[1,2,3]
1.5 元组类型
let t:[]=[string,number];
x=['this is a string',1]//fine
x=['string','文字‘]//error
获取元组数据
let msg =x[0]//根据下标获取对应值
1.6 enum类型
enum Enum{
RED,YELLOW,BLUE//默认编号从0开始
}
1.7 any类型
let data1:any='this is a string';
let dataAny:any=1;
let dataObject:object=1;
//any和object区别:any可以使用对应类型方法,object不可以调用对应类型方法
1.8 Void类型
let unusabe:void=undefine
2.变量声明
2.1 var,let和const
var 变量提升机制
我们在全局作用域中或还是在局部作用域中,使用var
关键字声明的变量,都会被提升到该作用域的最顶部,这就是我们常说的变量提升。
function car(color){
if(color){
var value='白色'
}else{
console.log(value)//undefined
}
console.log(value)//undefined
}
car(false)
上面example中,if
代码块中的var声明的变量就被提升到了函数的顶端,有的小伙伴就会疑惑了,if
代码块里的都没执行,怎么会提升到顶端了呢?,这是因为javaScript引擎,在代码预编译时,javaScript引擎会自动将所有代码里面的var
关键字声明的语句都会提升到当前作用域的顶端, 因此上面的代码就会被解析为下面。
[图片上传失败...(image-5146c0-1701239840143)]
function car(color){
var value;
if(color){
value='白色'
}else{
console.log(value)//undefined
}
console.log(value)//undefined
}
car(false)
- 只在当前函数下声明的变量有效
- 在代码块和{ }括号之内有效
let声明
let
声明和var声明用法是一样,都是定义变量,使用let声明的变量没有var那样的变量提升,let声明的变量只在当前作用域中有效。我们来把上面的example重写一下。
function car(color){
if(color){
let value='白色'
}else{
console.log(value)//error
}
console.log(value)//error
}
car(false)
禁止重复声明
如果在同一个作用域中某个变量已经存在,再次使用let关键字声明的话会报错。
var value='aaa'
let value='bbb'//error
在不同作用域
var value='aaa'//全局
if(true){
let value='bbb'//代码块中无影响
}
上面example中,可以完全看到,只有在相同作用域中重复声明变量才会报错。
const声明
ECMAscript6中还提供了const关键字声明,const声明指的是常量,常量就是一旦定义完就不能修改的值。还有一点需要注意的是,常量定义必须初始化值,如果不初始化值就会报错。