-
1、Typescript常用类型
-
1.1类型注解
-
let age:number = 18
说明:代码中的** :number** 就是类型注解
作用:为变量**添加类型约束**,上述声明的age 变量,只能赋值为number 类型
!!!当赋值为其他类型时会报错
-
1.2常用类型
-
原始类型:number / string / boolean / null / undefined / symbol
-
对象类型:object(数组,对象,函数等对象)
-
TS新增类型 联合类型、自定义类型(类型别名)、接口、元组、字面量类型、枚举、void、any
-
-
1.3数组类型
// 推荐,简洁
let numbers:number[] = [1,2,3]
// 不推荐 ,麻烦,不直观
let strings:Array<string> = ['a','b','c']
-
1.4联合类型
需求:当数组中既有number类型,又有string类型,这个数组该如何写
let arr:(number | string)[] = [1,'a',2,'b']
解释:|(竖线)在TS中叫联合类型,(由两个或多个其他类型组成的类型,表示可以是这些类型中的任意一种,注意:这是TS中联合类型的语法,只有一根竖线,跟JS中的或 ( || ) 不同)
-
1.5类型别名
类型别名(自定义类型):为任意类型起别名
使用场景:当同一类型(复杂)被多次使用时,可以通过类型别名,简化该类型的使用
type CustomArray = (number | string)[]
let arr1:CustomArray = [1,'a',2,'b']
let arr2:CustomArray = ['x','y',6,7]
解释:
1. 使用type关键字来创建类型别名
2. 创建类型别名后,直接使用该类型别名作为变量的类型注解即可
-
1.6函数类型
- 单独指定参数和返回值类型 (推荐使用)
// 函数声明创建
function add(num1:number,num2:number):number{
return num1 + num2
}
// 函数表达式创建
const add = (num1:number,num2:number):number =>{
return num1 + num2
}
- 同时指定参数和返回值类型 (麻烦死了,没事别用)
const add:(num1:number,num2:number)=>number = (num1,num2)=>{
return num1 + num2
}
解释:当函数作为表达式时,可以通过类似箭头函数形式的语法来为函数添加类型。
注意:这种形式只适用于函数表达式。
void 类型
如果函数没有返回值,那么,函数返回值类型就为:void
function greet(name:string):void{
console.log('hello',name)
}
- 函数可选参数
function mySlice(start?: number,end?: number):void{
console.log('起始索引:',start,'结束索引',end)
}
可选参数:在可传可不传的参数名称后面添加 ? (问号)
注意:可选参数只能出现在参数列表的最后,也就是说可选参数后面不能再出现必选参数
-
1.7对象类型
-
对象用法
-
let person:{name: string;age: number; sayHi(): void} = {
name:'jack',
age:19,
sayHi(){}
}
1. 直接使用{}来描述对象结构,属性采用属性名:类型的形式;方法采用方法名():返回值类型的形式
2. 如果方法有参数,就在方法名后面的小括号中指定参数类型(比如 greet(name:string):void )
3. 再一行代码中指定对象的多个属性类型时,使用 ; (分号)来分割
4. 如果一行代码只能指定一个属性类型(通过换行来分隔多个属性类型),可以去掉 ; (分号)
5. 方法的类型也可以使用箭头函数形式(比如: {sayHi:() => void})
- 对象可选属性
function myAxios(config:{url:string;method?: string}){
console.log(config)
}
可选属性的语法与函数可选参数语法一致,都使用 ? (问号) 来表示
-
1.8接口
-
接口用法
一个对象类型被多次使用时,一般都会使用接口(interface)来描述对象的类型,达到复用的目的
-
interface Iperson{
name: string
age: number
sayHi(): void
}
let person: Iperson = {
name: 'jack',