ts函数04

正常的函数

// 函数声明
function add(a,b){
    return a+b
}
// 函数表达式,匿名函数
let add2=function(a,b){
    return a+b
}

  在ts中

// TS
function add3(a: number, b: number): number { //a,b都是number的类型, :number表示返回值为number
    return a + b
}
console.log(add3(1, 2))
let c = add3(2, 3) //上面返回值为number类型,所以赋值也为number类型
// 匿名函数
let add4: (a: number, b: number) => number = function (a: number, b: number): number {  //定义好函数的参数时,后续一个参数都不能少,也不能多,但是可以定义可选参数去操作
    return a + b
}
console.log(add4(3, 4))
let d = add4(3, 4)

// 例子1
let xy = function (x: string, y?: string): string {      //定义可选参数,可选参数不能放在必选参数前面
    return x + y
}
console.log(xy('张' + ''))

// 例子2
let zz = "被抓到"
let xy2 = function (x: string = "李", y?: string, z: string = zz): string {      //定义可选参数,可选参数不能放在必选参数前面,但是在后面加默认参数则可以放后面
    return x + y + z
}
console.log(xy2('李', '啥啊')) //当可选参数不选时则为undefined

// 剩余参数解决
function fn(x: string, y: string, ...args: number[]) {
    console.log(x, y, args)
}
fn('11', '22', 33, 44)
// 函数重载:函数名相同,形参不同的多个函数,可以使用重载定义多个函数类型
function Newfn(x: string | number, y: string | number, z?: string | number): string | number {
    if (typeof x == 'string' && typeof y == 'string' && typeof z == 'string') {
        return x + y
    } else if (typeof x == 'number' && typeof y == 'number' && typeof z == 'number') {
        return x + y
    }
}
console.log(Newfn(1, 3))
console.log(Newfn('张', '三', ''))

// 类型断言
// 类型断言处理联合类型的方法 / 函数获取数字或字符串的长度
function getLength(x: string | number): number {
    // 变量as类型 手动指定对应的类型
    if ((x as string).length) {
        // <类型>变量
        return (<string>x).length
    } else {
        return x.toString().length
    }
}
console.log(getLength(2222))
console.log(getLength('www'));
// 将任何类型断言成any类型 ,any类型可以可以访问任何属性和方法
// 该方法会掩盖真正的错误,不确定的情况下,不建议使用as any,但是可以将any类型断言为一个具体的类型,如下列函数
// (window as any).a = 10
function fnc(x: any, y: any): any {
    return x + y
}
let aaa = console.log(fnc(1, 2))
let bbb = console.log(fnc('老王', '来了'))

// 类型别名 通过type对类型起一个简洁的别名,常用于联合类型,案例如下
type str = string
type num = number
type bol = boolean
type all = string | number | boolean
let array: all = 123

// 字符串字面量类型   用来约束取值或某几个字符串的一个,约束好之后,取值只能在约束的值中选取,如下
type stringType = "张三" | "李四" | "王五"
let names: stringType = "李四" //只能在"张三" | "李四" | "王五"选

  

posted @ 2024-02-19 15:56  文采呱呱  阅读(3)  评论(0编辑  收藏  举报