1、函数基本使用
(1)函数定义的方式
export default {}
// 匿名函数
const makeMoney = function(salary: number, reward: number): number {
return salary + reward
}
// 有名函数 | 命名函数 | 普通函数
function writeCode(hour: number, sleep: number) {
return hour
}
// 箭头函数
const seeMeiMei = (time: number):void => {
console.log(`我每天要看${time}个小时MeiMei`);
}
seeMeiMei(8)
// 接口函数
type myFunc = (x: number, y: number) => number
const myfunc:myFunc = (a: number, b: number) => a + b
2.函数参数的处理
export default {}
// 可选参数
const func1:(x: number, y?: number)=>number = function(a, b) {
return a;
}
const func2 = function(a: number, b?: number): number {
return a;
}
func2(10);
func2(10, 20);
func2(10, undefined);
// 函数的默认值
const func3 = function(a: number = 1, b:number =2, c:number=3) {
return a + b + c;
}
func3();
func3(10);
func3(10, 20);
func3(10, 20, 30);
// 函数的剩余参数
const func4 = function(...args:any[]) {
console.log(args);
}
func4(10, 20 , 30, "邱淑贞");
const func5 = function(a:number, b:number, ...args:any[]) {
console.log(a);
console.log(b);
console.log(args);
}
func5(10, 20 , 30, "邱淑贞", "邢菲");
3.构造函数
export default {}
// 构造函数
var myFunction = new Function("a", "b", "return a * b");
var x = myFunction(4, 3);
console.log(x);
// 递归函数
function sum(arr: number[], n: number):number {
if(n <= 0){
return 0;
}else {
return sum(arr, n-1) + arr[n-1];
}
}
sum([2, 3, 4, 5], 3)
4.函数重载
export default {}
// 不使用函数重载的问题
function add(a: number, b: number){
return a + b;
}
add(10, 20);
function add2(a: string, b: string){
return a + b;
}
add2("我的女神是: ", "邱淑贞");
function add3(a: string| number, b: string | number){
// return a + b;
if( typeof a=="number" && typeof b=="number"){
return a + b;
}
if( typeof a=="string" && typeof b=="string"){
return a + b;
}
if( typeof a=="string" && typeof b=="number"){
return a + b;
}
if( typeof a=="number" && typeof b=="string"){
return a + b;
}
}
add3("我的女神是: ", "邱淑贞");
add3(10, 20);
add3("邱淑贞", 20);
// 定义函数重载
function addFunc(a:number, b: number):number;
function addFunc(a:string, b: string):string;
function addFunc(a:number, b: string):string;
function addFunc(a:string, b: number):string;
// 使用函数重载
function addFunc(a: any, b: any):any {
return a + b;
}
addFunc(10, 20);
addFunc("谭松韵", "金晨");
addFunc(27, "白鹿");
addFunc("赵今麦", 19);
// 定义参数类型与参数数量不同
function star(s1:string):void;
function star(n1:number,s1:string):void;
function star(x:any,y?:any):void {
console.log(x);
console.log(y);
}
star("王心凌");
star(1,"爱你");