1函数声明
//函数声明
//1 参数需要定义类型 返回值也需要定义类型
function sum(x: number, y: number): number {
return x + y
}
多参数少参数都会报错不行
//2 多参数少参数都会报错不行
sum(1, 2)
sum(1) //x
sum(1, 2, 3) //x
sum() //x
函数返回值用的是类型推断 如果手动添加类型也可以
//3函数表达式
//mySum用的就是类型推断 可以不用加类型
let mySum3 = function sum3(x: number, y: number): number {
return x + y
}
//如果手动添加类型
let mySum2: (x: number, y: number) => number = function sum2(x: number, y: number): number {
return x + y
}
2接口定义函数
//4接口定义
interface SearchFunc {
(params1: string, params2: string): boolean
}
let mySearch: SearchFunc
mySearch = function (params1: string, params2: string) {
return params1 === params2
}
2-2函数参数可选
//函数参数可选
function sum4(x: number, y?: number): number {
if (y) {
return x + y
} else {
return x
}
}
function sum5(x: number, y?: number) {
if (y) {
return x + y
} else {
return x
}
}
//如果可选参数放在第一个位置,必选参数必须给默认值
function sum6(x?: number, y: number = 0): number {
if (x) {
return x + y
} else {
return y
}
}
但是es6 可以添加默认值
3 函数重载
4 函数类型别名
//1 函数类型别名
type FunctionNumber = (a: number, b: number) => number
function aFun(a: number, b: number): number {
return a + b
}
//注意 返回值的类型位置;返回值可以省略被类型推断
function aFun1(a: number, b: number) {
return a + b
}
const bFun = (a: number, b: number): number => {
return a + b
}
//注意 返回值的类型位置;返回值可以省略被类型推断
const bFun1 = function (a: number, b: number) {
return a + b
}
//类型别通常给箭头函数使用
const cFun: FunctionNumber = (a, b) => {
return a + b
}