ts定义数组类型_Typescript基本类型

97b8f82297d34f357a8003b1be516619.png

基本类型

类型注解

  • 作用:相当于强类型语言的类型声明
  • 语法:(变量/函数):type

原始类型

 //原始类型 let bool:boolean = true; let num:number = 123; let str:string = 'asd'

如果将str变量改成number类型,就会提示报错,ts不允许改变变量的数据类型

6bfc6d5ab6e02167de7fce430d9a0d26.png

数组类型

  • 两种定义方式
 //数组类型 let arr1:number[] = [1,2,3] let arr2:Array = [1,2,3]
  • ts只允许数组中包括一种数据类型的值,在数组arr1中添加字符串类型的值就会报错
0a535f66693bd535e688c3f4b30f7a26.png
  • 如果想为数组添加不同类型的值,需要使用联合类型
 //联合类型 let arr1:number[] | string[] = [1,2,3] let arr2:Array = [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] 
25dc1e5d51369c947b9b264cbd8ebbaa.png

函数

 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) //false

null 和 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索引
fedd9e1d16f47920a82a310526fd4a79.png
  • 枚举的实现原理:反向映射,看下图
cdc1b34ae71f586947313e595a6b49d5.png

字符串枚举

 enum Msg { Success = '成功', Erros = '失败' }
  • 字符串枚举不可以反向映射
549b5302fec40f622dfe9c0cda347732.png

异构枚举

  • 就是字符串枚举和数字枚举混用,不推荐使用
 enum Answer { N, Y = 'yes' }

枚举成员性质

  • 不能修改定义后的枚举值
 enum Char { //常量枚举 a, b = Char.a, c = 1+ 3, //需要被计算的枚举成员 d = Math.random(), e = '123'.length }
  • 常量枚举(三种):会在编译时编译出结果
  • 没有初始值
  • 对已有枚举成员的引用
  • 常量表达式
  • 需要被计算的枚举成员
  • 在执行时才会计算出结果
  • 看下编译结果
  • 常量枚举:在编译时编
  • 需要被计算的枚举成员:没有编译出结果
7bc8a09b42a60bba9e392a6f4fcd57c2.png

常量枚举

  • 用const声明的枚举
 const enum Month { Jan, Feb }
  • 会在编译阶段会被移除
bafe861305866e09ddfb5305a3e37e88.png

枚举类型

 enum E {a,b} //没有值 enum F {A=0,B=1} //数字枚举 enum G {a='a',b='b'} //字符串枚举
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值