德胜云资讯,添加一些关于程序相关的内容,仅供大家学习交流(https://www.wxclwl.com)
日期:2023/03/28 11:01作者:黄伟依人气:
基本类型
类型注解
作用:相当于强类型语言的类型声明语法:(变量/函数):type原始类型
//原始类型 let bool:boolean = true; let num:number = 123; let str:string = asd如果将str变量改成number类型,就会提示报错,ts不允许改变变量的数据类型
数组类型
两种定义方式 //数组类型 let arr1:number[] = [1,2,3] let arr2:Array<number> = [1,2,3] ts只允许数组中包括一种数据类型的值,在数组arr1中添加字符串类型的值就会报错如果想为数组添加不同类型的值,需要使用联合类型 //联合类型 let arr1:number[] | string[] = [1,2,3] let arr2:Array<number | string> = [1,2,3]元组类型
限定了数组的类型和个数,数组值必须安装声明变量时的类型一致,个数必须一致,否则都会报错。 let tuple:[number,string] = [1,a] //正确 let tuple2:[number,string] = [a,a] //错误,不能将字符串a赋值给nuumber let tuple3 = [number,string] = [1,a,3] //错误,数组中只能有两个值 元组越界问题:向元组中push一个值 let tuple:[number,string] = [1,a] tuple.push(2) console.log(tuple) //[1,a,2],可以看出可以向tuple使用push方法添加 //但是不能访问,会报错。 tuple[2]函数
let add = (x:number,y:number):number => x+y; ts要求给函数参数提供类型值,返回值一般不需要提供类型值,ts会自动使用推导出返回值类型。对象
let obj:object = { a:1, b:2, } // 这样写不允许修改对象的变量值 obj.a = 3 //报错 正确做法:给变量直接赋值对应的类型 let obj2:{a:number,b:number} = { a:1, b:2, } obj2.a = 3 //正确Symbol
具有唯一的值两种定义方式 let s1:symbol = Symbol() let s2 = Symbol() //此时s1和s2是不相等的 console.log(s1 === s2) //falsenull 和 undefined
let nu:null = null; let un:undefined = undefined;void
让任何表达式返回undefined没有任何返回值 let noReturn = () => {}any
可以是任何类型的值never
永远不会有返回值 let error = () => { throw new Error(err) } let endless = () => { while(true){ } }枚举类型
一组有名字的常量集合数字枚举
使用enum定义枚举 // 正常枚举值是从0开始 enum Role { Reporter, //0 Developer, //1 Main, //2 Owner, //3 Guest, //4 } console.log(Role.Reporter) //0 //自定义枚举值,自定义后的值,需要一次往下递增 enum Role2 { Reporter == 1, //1 Developer, //2 Main, //3 Owner, //4 Guest, //5 } 打印一下Role,是个对象。可以根据key和value索引枚举的实现原理:反向映射,看下图字符串枚举
enum Msg { Success = 成功, Erros = 失败 } 字符串枚举不可以反向映射异构枚举
就是字符串枚举和数字枚举混用,不推荐使用 enum Answer { N, Y = yes }枚举成员性质
不能修改定义后的枚举值 enum Char { //常量枚举 a, b = Char.a, c = 1+ 3, //需要被计算的枚举成员 d = Math.random(), e = 123.length } 常量枚举(三种):会在编译时编译出结果没有初始值对已有枚举成员的引用常量表达式需要被计算的枚举成员在执行时才会计算出结果看下编译结果常量枚举:在编译时编需要被计算的枚举成员:没有编译出结果常量枚举
用const声明的枚举 const enum Month { Jan, Feb } 会在编译阶段会被移除枚举类型
enum E {a,b} //没有值 enum F {A=0,B=1} //数字枚举 enum G {a=a,b=b} //字符串枚举