本书未发布
function
函数的定义
// z 是可选参数, 可选参数后面不可以再添加必选参数
function add(x: number, y: number, z?: number): number {
return x + y
}
let res = add(1, 2)
函数表达式
const add = (x: number, y: number, z?: number): number => {
return x + y
}
// 报错
// let add2: string = add
// 函数赋值, 此时箭头后面的 number 表示的是返回值是数字类型
let add2: (x: number, y: number, z?: number) => number = add
type GetName = (firstName: string, lastName: string) => string
let getName: GetName = function(firstName: string, lastName: string): string {
return firstName + lastName
}
用接口来描述函数类型
interface ISum {
(x: number, y: number, z?: number): number
}
let add2: ISum = add
函数的重载
函数重载的时候, 多个函数声明之间不能有其他代码
需求:
function add(a: string|number, b: string| number): void { } add('xiao', 'ming') add(1, 2) // 此时, 像下面这样传递参数也不会报错, 但是如果需求是要求传入的数据类型必须是一样的话, 像这样写就不行了, 下面这样传递也不会报错 add(1, 'sheng')
正确答案
function add(a: string, b: string):void // 这之前不能有其他代码 function add(a: number, b:number):void function add(a: string| number, b: string|number): void { } add(1, 2) add('xiao', 'ming') // 像下面这样调用函数的话就会报错 add(1, 'ming')