TypeScript
1.类型推断
let str = 'abc'
str = 10 //报错
2.类型注解
let str: string //预定义一个类型
str = 'abc'
3.类型断言
let numArr = [1,2,3]
const result = numArr.find(item => item > 2) as number // as number断言一定有大于2的数
result*5 // 如果不断言, 这行会报错,因为可能ressult是undefined
4.基础类型和联合类型
//基础类型, 当我们分配这些类型以后, 就不能进行其他类型的设置了
let v1: string = 'abc'
let v2: number = 10
let v3: boolean = true
// 以下两种不常用
let nu: null = null
let un: undefined = undefined
//联合类型,可以是一种类型也可以是另一种类型
let v4: string | null = null // null可以赋值给任意类型(前提不开启严格配置项)
// 具体值的限制, 只能分配其中之一
let v5: 1|2|3 =5//报错 =2正确
5.数组,元组,枚举
数组
let arr: number[] = [1,2,3];//[1,2,3,'a']报错
let arr1: Array<string> = ['a','b','c'];//['a','b','c'1]报错
元组
let t1: [number,string,number] = [1,'a',2] //定义一个元组
// t1[0] = 'a' 报错
并不一定要三个值, 可选
let t1: [number,string,number?] = [1,'a',2] //2去掉也不报错,但'a'去掉报错
枚举
//定义枚举类型
enum MyEnum{
A,
B,
C
}
//两种访问方式
console.log(MyEnum.A)
console.log(MyEnum[0])
Void类型
只能被赋值为undefined
6.函数
function MyFn (a:number, b:string) //参数接收
: number{ //设置返回值类型
return 100
}
function MyFn (a:number, b?:string, c?:boolean, ...rest:number[]) //b可选, 建议必选的放左侧, 可选的放右侧
: number{ //设置返回值类型
return 100
}
//使用
const f = MyFn(20,'abc',true,1,2,3)
7.接口
// 定义自己创建类型的一个约束方式
interface Obj{
name:string,
age:number
}
const obj:Obj={
name: 'a',
age:10 //避免一些错误, 比如写成ago = 10就会报错
}
const obj2:Obj={
name: 'a',
age:10 //避免一些错误, 比如写成ago = 10就会报错
}
8.类型别名
type MyUserName = string | number
let a: MyUserName = 'a' // = 1也可以
9.泛型
function myFn(a:number,b:number):number[]{
return [a,b]
}
// 改成通用的函数
function myFn<T>(a:T,b:T):T[]{
return [a,b]
}
myfN<number>(1,2) //(1,'a')报错