TypeScript学习笔记(二)

TypeScript类型

一、Number数字类型:可表示整数、浮点数和正负数
二、String字符串类型
1.单引号:'abcd'
2.双引号:"abcd"
3.反引号:abcd(es6引入新的字符串书写方式,可实现内容的分段、分行、填充变量,可以创建一个字符串模板)//键盘上的波浪线那个键英文状态下就是反引号``
三、Boolean布尔类型
两种定义方式:
1.Typescript会自动定义isTrue为boolean类型

let isTrue=true;

2.手动指定类型

let isTrue:boolean

四、Array数组类型
三种定义方式:
1.

let list1:number[]=[1,2,3,4];
let list2:Array<number>=[1,2,3,4];
let list3=[1,2,3,4];
let list4=[1,"ddd"];  //可存放number与string类型的值
let list5:any[]=[1,"abcd",true];  //可存放任何类型的值

五、tuple元组类型(固定类型、固定长度的数组)

let person1:[number,string]=[1,"abcd"];

注:
1.此类型含有个bug

person1[2]=3   //报错
person1.push(3)   //不报错

2.声明元组时一定要指定数据类型
六、联合(union)与字面量(Literal)类型
1.union定义

let union:string|number   //union只能被赋值为string或Literal类型

2.字面量类型(Literal)//可以确定其取值范围

  let union3:0|1|2   //其赋值范围只能是0、1、2

3.联合使用两个类型

function(
     n1:number|string,
     n2:number|string,
     resultType:"as-number"|"as-string"
){
     if(resultType==="as-string"){
      return n1.toString()+n2.toSting();
     else{
      return n1+n2;
   }
 }
}

七、枚举类型(Enum)

enum Color{
  red,
  green,
  blue
}
let color=Color.blue;
console.log(color);   //输出结果为2,如果给red赋值为2,输出结果就为4,也可以自定义每一个的值,值也可以是字符串

八、动态类型any与unknown
1.any(支持和兼容ts中的所有类型)//适合项目快速上线,但有安全隐患

let randomValue:any=666;   //也可以等于Boolean或string或{}或。。。
randomValue()
randomValue.toUpperCase()//不报错

2.unknown(不保证类型但能保证类型安全)//更保险

let randomVaule:unknow=666
    randomValue()
    randomValue.toUpperCase()//报错

解决方法:

if(randomValue==="function"){
     randomValue()                //使用unknown时需要做一定的程度的判断或类型转换,确定变量类型以后才能正常使用
}
    if(randomValue==="string"){
     randomValue.toUpperCase()
 }

九、void、undefined与never
1.void:指变量本身不存在,在一个函数没有任何返回的情况下,它的类型就是void,也可以指定函数类型

function printResult():void{
       console.log("lalala")}
    console.log(printResult())  //输出结果为undefined

2.undefined:变量没有赋值没有初始化

function printResult():undefined{
       console.log("lalala")return}

3.never:一个函数永远执行不完

function throwError(message:string,errorCode:number):never{
  throw{
     message,
     errorCode}       //抛出异常,函数永远执行不完
}
throwError("not found","404");
function whileLoop():never{
   while (true){
  cosole.log("haha")
  }
}

十、类型适配(类型断言) Type Assertions
举例:

let message:any;
message="abc";   //此时message的类型依然是any类型
let ddd=(<string>message).endsWith("C");   //类型适配方法一,之后可调用string的方法
let ddd2=(message as string).endsWith("C");   //类型适配方法二

注:使用Type Assertions时一定要了解当前变量的类型,并对自己的代码100%信心,否则可能会引发严重的错误!!
十一、函数类型
函数定义的两种方式:
1.

let log=function(message){
    cosole.log(message);
}
let log2=(message:string)=>{    //可以给函数绑定它的类型,函数中的语句只有一句时,{}可以省略
  cosole.log(message);
}
log2("hello");  //参数只能传递string类型
let log3=(message:string,code:number)=>{
   cosole.log(message,code);
}
log3("hello",2);  //到用这个函数时,必须传指定类型的两个参数

可选参数:

let log4=(message:string,code?:number)=>{  
   cosole.log(message,code);
}
log3("hello");  //code后面加入?(必须加在可选参数的末尾参数),调用时可省略此参数 ,code会被默认设定为undefined

默认参数:

let log5=(message:string,code:number=0)=>{
   cosole.log(message,code);
}
log3("hello");  //再不输入code的值的情况下,默认code=0
log3("hello",2);   //当输入了新数据会覆盖默认值
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

_sophia

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值