开篇
世上只有一种英雄主义,就是在认清生活真相之后依然热爱生活。--罗曼罗兰
函数写法
函数类型一般写法: 表达式写法(常用)
(参数: 参数类型) => 返回值类型
type fooType = (num: number) => number
cosnt foo: fooType = (num: number) => {
return num * 2
}
函数类型的调用签名写法:
函数调用签名是从对象角度看待函数, 不仅可以调用函数, 还可以有其他属性
interface Ifoo {
name: string
age: number
(num: number): number
}
const foo: Ifoo = (num: number) => {
return num * num
}
foo.name = "foo"
foo.age = 33
foo(123)
函数的参数
可选参数
function foo(x: number, y?: number) {
if(y !== undefined) {
console.log(x + y)
}
}
foo(1)
默认参数
传入一个参数相当于undefined, 传入一个参数和传入一个undefined
function foo(x: number, y = 111) {
console.log(x + y)
}
foo(1)
foo(2, undefined)
剩余参数
function foo(...args: any[]) {
}
foo(1, "fsadf", true)
函数的重载
在一个函数中定义多个同名的函数声明,这些函数声明可以有不同的参数类型、参数数量或返回值类型,用于为不同的输入提供不同的处理逻辑。开发中尽量使用联合类型, 若联合类型解决不了的时候就要用的重载。
// 函数重载签名
function res(para1: number, para2: number): number
function res(para1: string, para: string): string
// 通用函数
function res(para1: any, para2: any) {
return para1 + para2
}
// 不能直接调用通用函数(也就是不能传入通用函数的参数支持的类型)
console.log(res(1, 2))
console.log(res("aaa", "bbb"))