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 = "李四" //只能在"张三" | "李四" | "王五"选
代码改变了我们,也改变了世界