数字数组类型 let arr:number[] = [1, 2, 3, 4] 字符串类型数组 let arr:string[] = ['a', 'b', 'c'] 布尔类型数组 let arr:boolean[] = [false, true]
泛型定义方式 布尔类型数组 let arr:Array 数值类型数组 let arr:Array 字符类型数组 let arr:Array
定义类型和接口组合用法
interface X {
name: string,
age?: number
}
let arr:X[] = [{name: 'c', age: 18}, {name: 'b'}]
二维数组定义方法 let arr5:number[][] = [[1], [2], [3]]
泛型写法let arr6:Array<Array> = [[1,2], [2]] 定义一个乱七八糟的数组 let arr7:any[] = [1, 'as', true, {}] 定义一个元组 let arr8:[number, string, boolean, {}] = [1, 'c', true, {}]
函数 函数定义类型和返回值
function add(a:number, b:number):number {
return a + b
}
const add1 = (a: number, b:number):number => a + b
定义参数默认值
const add2 = (a:number = 10, b:number = 20);number => a + b
函数参数可选参数(不可与默认值同时存在)
const add3 = (a:number, b?:number):number => a + b
参数是个对象如何定义 interface定义函数参数类型
interface User{
name: string,
age: number
}
const add = (user:User):User => user
add({name: 'c', age: 18})
函数this类型
在ts中函数方法里this.是点不出来的
interface User{
user:number[]
add:() => void
}
let obj:Obj = {
user:[1, 2, 3],
add(num:number) {
this //这里的this是this不出来的
}
}
interface User{
user:number[]
add:(this:Obj, num:number) => void
}
let obj:Obj = {
user:[1, 2, 3],
add(this:Obj, num:number) {
this.user.push(4) // 这里就可以this出来了
}
}
函数重载
同一个函数里面,入参不同,执行的方法不同,一个函数里实现增删改查
let user:number[] = [1, 2, 3]
function findNum(add:number[]):number[] // 传入数组做添加
function findNum(id:number):number[] // 传入id查单个
function findNum():number[] // 传空查全部
function findNum(ids?:number | number[]):number[] {
if(typeof ids == 'number') {
return user.filter(v => v == ids)
} else if(Array.isArray(ids)) {
user.push(...ids)
return user
} else {
return user
}
}
console.log(findNum([4, 5, 6]))