函数类型
//注意,参数不能多传,也不能少传 必须按照约定的类型来
const fn = (name: string, age:number): string => {
return name + age
}
用接口定义函数类型
采用函数表达式接口定义函数的方式时,对等号左侧进行类型限制,可以保证以后对函数名赋值时保证参数个数、参数类型、返回值类型不变。
interface SearchFunc{
(source: string, subString: string): boolean;
}
可选参数
注意点:可选参数后面不允许再出现必需参数
//通过?表示该参数为可选参数
const fn = (name: string, age?:number): string => {
return name + age
}
参数默认值
const fn = (name: string = "我是默认值"): string => {
return name
}
fn()
剩余参数
function push(array: any[], ...items: any[]) {
items.forEach(function(item) {
array.push(item);
});
}
let a = [];
push(a, 1, 2, 3);
函数重载
重载是方法名字相同,而参数不同,返回类型可以相同也可以不同。
解决:为同一个函数提供多个函数类型定义来进行函数重载,编译器会根据这个列表去处理函数的调用。
//如果参数类型不同,则参数类型应设置为 any。
//参数数量不同你可以将不同的参数设置为可选。
function fn(params: number): void
function fn(params: string, params2: number): void
function fn(params: any, params2?: any): void {
console.log(params)
console.log(params2)
}