Appearance
函数类型
(箭头)函数定义类型和返回值
ts
function add(a: number, b: number): number {
return a + b
}
// 定义箭头函数
const subtract = (a: number, b: number): number => a - b
console.log(add(1, 1))函数的默认参数 | 函数的可选参数
ts
function add(a: number = 1, b: number = 1): number {
return a + b
}
console.log(add())
// 可选参数
function add(a: number = 1, b?: number): number {
return a + b
}
console.log(add()) //结果是1+undefined 为NaNTIP
可选参数和默认值没有办法一起使用
参数是一个对象
ts
interface User {
name: string,
age: number
}
function add(user: User): User {
return user
}
console.log(add({name: "张三", age: 20}))函数中定义this类型
ts
interface Obj {
user: Array<number>,
add: (this: Obj, num: number) => void
}
// ts 可以定义this的类型,在js中无法使用 必须是第一个参数定义this的类型
let obj: Obj = {
user: [1, 2, 3],
add(this: Obj, num: number) {
this.user.push(num)
}
}
obj.add(4)
console.log(obj)函数重载
ts
let num: Array<number> = [1, 2, 3, 4]
//如果传的是一个number类型的数组就做添加
function findNum(add: number[]): number[]
function findNum(id: number): Array<number>//如果传入id就是单个查询
function findNum(): Array<number>// 如果没有传入东西就是查询全部
// 最下面的函数为实现函数
function findNum(ids?: number | number[]) {
if (typeof ids == "number") {
// 单个查询
return num.filter(x => x == ids)
} else if (Array.isArray(ids)) {
num.push(...ids)
return num
} else {
// 什么都不传(查询全部)
return num
}
}
console.log(findNum()) //[ 1, 2, 3, 4 ]
console.log(findNum(1)) // [ 1 ]
console.log(findNum([5, 6])) //[ 1, 2, 3, 4, 5, 6 ]