TypeScript速成
1、类型推断
这里的str已经推断为string类型,不能像JavaScript一样直接给str赋值number类型
2、类型注解
let str:string='abc'
或者
let str:string
str='abc'
3、类型断言
因为typescript会判定这个item可能为undefined类型,但是我们人为可以确定item一定是number类型,所以要符合typescript的规则需要进行断言操作
未断言
断言后
let numArr=[1,2,3]
const result=numArr.find(item => item > 2 ) as number
console.log(result*5)
4、基础类型和联合类型
基础类型
let v1:string='abc'
let v2:number=10
let v3:boolean=true
let nu:null=null
let un:undefined=undefined
联合类型
//赋值只能为string类型或者null
let v4:string|null=null
//赋值只能为1或者2或者3
let v5:1|2|3=2
5、数组、元组、枚举
数组
//不建议写第一种
let arr1=[1,2,3]
let arr2:number[]=[1,2,3]
let arr3:Array<string>=['a','b','c']
元组
let t1:[number,string,number]=[1,'a',2]
修改元组的话只能修改为同类型的数据
比如t1[0]='b'就会报错,t1[0]=3就是对的
元组定义的数据可有可无,但是索引为0的不可以为无
let t1:[number,string?,number?]=[1]
枚举
enum myEnum{A,B,C
}
console.log(myEnum.A)
console.log(myEnum[0])
6、函数
function myFn1(a:number,b:number):void{console.log(a+b)
}function myFn2(a:number,b:number):number{return a+b
}function myFn3(a=10,b:string,c?:boolean,...rest:number[]):number{return 100
}
myFn3(20,'a',true,1,2,3)
myFn3(30,'b')
7、接口
通常用来进行对象的定义
interface Obj{name:string,age:number
}
const obj1:Obj={name:'a',age:10
}
const obj2:Obj={name:'a',age:10
}
8、类型别名
type myUserName=string|number
let a:myUserName='abc'
let b:myUserName=10
9、泛型
function myFn<T>(a:T,b:T):T[]{return [a,b]
}
myFn<number>(1,2)
myFn(1,2)