ts学习第二天

65 阅读2分钟

数字数组类型 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]))