TS——函数

一、函数的定义

 函数:参数列表里面的每个参数都需要名称和类型,

  函数本身也可以添加返回值类型,TypeScript能够根据返回语句自动推断出返回值类型,因此我们通常省略它

1.声明式定义

function add(x: number, y: number): number {
    return x + y;
}
add(1, 2); //函数传参少了,多了都不行,参数定死了

function fn(): number {
    return 100;
}

function fm(arg1: number, arg2: any[]): [number, any[]] {//[number, any[]]返回值类型是一个元组
    return [arg1 * arg1, [123, "abc", arg2]];
}
console.log(fm(100, ["hello world"]));//[ 10000, [ 123, 'abc', [ 'hello world' ] ] ]


interface Person {
    age: number,
    color: string
}
function f(age: number, color: string): Person[] {  //Person[] :Person接口类型的数组
    return [{ age, color }]
}
f(100, "red");

2.定义式

let arr = [function add(x: number, y: number): number { return x + y; }];

(function add(x: number, y: number): number {
    return x + y;
})(10, 10);

let myAdd = function (x: number, y: number): number { return x + y; };

3.可选参数

 可选参数一般放在必填参数后面,?表示可选参数

interface Params {
    params: object
}
function Myaxiosget(arg1: string, arg2?: Params) {// ?表示可选参数
    console.log(arg1, arg2);
}

Myaxiosget("http://xxx", { params: { id: 1 } })//http://xxx { params: { id: 1 } }
Myaxiosget("http://xxx")//http://xxx undefined

4.默认参数

在类型后加  “=值”

// 默认参数
function fx(arg1: number, arg2: string = "test") {  //="xxxxx":表示默认参数
    console.log(arg1, arg2);
}
fx(123)//123 test
fx(123, "world")//123 world

5.占位问题

// undefined可以不传值的时候占位
function fx2(arg1: number, arg2?: string, arg3?: string) {
    console.log(arg1, arg2, arg3);
}
fx2(123, undefined, "world")//123 undefined world

function fx3(arg1: number = 100, arg2: string) {
    console.log(arg1, arg2);
}
fx3(undefined, "world")//100 world

6.剩余参数

...rest表示,(...rest:只能放最后面,是个数组)

function ff(arg1: any, arg2: any, ...rest): void {
    console.log(arg1, arg2, rest);
}
ff(10, "hello");//10 hello []
ff(10, "hello", 10, 200, 300);//10 hello [ 10, 200, 300 ]

7.函数类型变量:根据参数和返回值对函数进行类型分类

 (参数1:类型,参数2:类型)=>返回值类型

let aa = 100;
let f1: (number) => number;//来描述f1的返回类型是number
f1 = function (arg1: number): number {
    return arg1 + 100;
};
function f2(arg1: number): number {
    return 200;
}
f1 = f2;
f1(90);
let f1: (number) => number;//函数类型描述
let f3 = (arg1: number): number => arg1;//箭头函数  ①有等号,②返回值=> arg1是一个变量

 8.使用接口封装函数变量类型

interface MyTool {
    (number): number  //: number是指函数的返回值类型
}
let pp: MyTool;
pp = (arg: number): number => { //箭头函数
    return 200;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
回答: 在TypeScript中,可以使用以下几种方式来定义函数类型。首先,可以使用函数声明法来定义函数类型,例如:\[1\] ```typescript function fun(): string { return '123'; } ``` 其次,可以使用匿名函数法来定义函数类型,例如:\[3\] ```typescript let fun2 = function (): number { return 123; }; ``` 还可以定义没有返回值的方法,例如:\[3\] ```typescript function fun3(): void { console.log(111); } ``` 此外,为了实现函数重载,可以引入可选参数,例如:\[2\] ```typescript function times(x: number, y?: number) { if (y) { return x * y; } return x; } ``` 以上是在TypeScript中定义函数类型的几种常见方式。 #### 引用[.reference_title] - *1* [TS函数类型定义](https://blog.csdn.net/weixin_44530344/article/details/126683321)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down1,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [TS基础——为函数声明类型](https://blog.csdn.net/weixin_41387874/article/details/123078371)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down1,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [TS复习-----TS中的函数](https://blog.csdn.net/qq_63358859/article/details/126926898)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值