TypeScript文档地址: Function
声明方式
:::info
在我们声明函数的时候,要关注的主要两点:约定输入、约定输出
意思就是规定入参的类型,以及返回值的类型
:::
示例
// 约定输入, 约定输出
// 格式: (参数: type , 参数:type) : 返回类型
function add(x:number, y:number):number{
return x+y // 必须是number
}
add(1,2) // 参数一定要一致,多或少都不行
// 可选参数
// z是可选参数,注意的是,可选参数一定要放在参数的后面
// 否则会报错
function add(x:number, y:number, z?:number):number{
if(typeof z === 'number'){
return x + y + z
} else {
return x + y
}
}
// 函数表达式如何声明
const add = (x:number, y:number, z?:number):number => {
if(typeof z === 'number'){
return x + y + z
} else {
return x + y
}
}
// 我们会发现这时的add的类型是:
// 这个时候这个函数本身也是一个类型,add是这个函数类型。
// const add: (x: number, y: number, z?: number) => number
// 所以,以下赋值会报错
// 不能将类型“(x: number, y: number, z?: number) => number”分配给类型“string”。
let add2: string = add;
// 正确的赋值方法,注意,在ts中,凡是在:后面的都代表类型
// 需要注意的是这个 => 符号,并不是代表es6的箭头函数
// 而是ts中声明函数类型返回值的方法。
let add2: (x:number, y:number, z?:number) => number = add;
// 但是这样写很累赘
// 所以,我们可以使用interface去描述函数类型
interface ISum{
(x:number, y:number, z?:number):number
}
let add3: ISum = add;