当前位置: 首页 > news >正文

【03】基础知识:typescript中的函数

一、typescript 中定义函数的方法

函数声明法

function test1(): string {return '返回类型为string'
}function test2(): void {console.log('没有返回值的方法')
}

函数表达式/匿名函数

const test3 = function(): number {return 1
}

二、typescript 中 函数参数写法

1、typescript 中定义函数传参

函数声明

function getInfo(name: string, age: number): string {// 传参name为string类型、age为number类型,返回类型为stringreturn `${name} - ${age}`
}getInfo('zhangsan', 20) // zhangsan - 20

函数表达式/匿名函数

const getInfo2 = function(name: string, age: number): string {// 传参name为string类型、age为number类型,返回类型为stringreturn `${name} - ${age}`
}getInfo2('zhangsan', 18) // zhangsan - 18

2、可选参数

在 es5 中,方法的形参和实参个数可以不一样;但是在 ts 中必须一样,如果不一样就需要配置可选参数。

ts 中 通过【 形参?: 数据类型 】形式定义可选参数,代表该参数在方法调用时可以不传入。

注意:可选参数必须到参数的最后面,否则ts编译时会报错

function getInfo(name: string, age?: number): string {if (age) {return `${name} - ${age}`} else {return `${name} - 年龄未定义`}
}getInfo('zhangsan') // zhangsan - 年龄未定义
getInfo('zhangsan'20) // zhangsan - 20

3、默认参数

创建方法时,可以给参数指定默认值。

function getInfo(name: string, age: number=18): string {return `${name} - ${age}`
}getInfo('zhangsan') // zhangsan - 18
getInfo('zhangsan'20) // zhangsan - 20

4、剩余参数

通过 es6 的 三点运算符,接受形参传过来的值

function sum (...result: number[]): number{return result.reduce((prev, cur) => {return prev + cur}, 0)
}sum(1, 2, 3, 4) // 10
function sum (a: number, ...result: number[]): number{return result.reduce((prev, cur) => {return prev + cur}, a)
}sum(1, 2, 3, 4) // 10

三、函数重载

javascript 是面向过程编程语言,没有函数重载的概念

java 中函数重载指的是,两个或者两个以上同名函数,但它们的参数不一样

typescript 中的函数重载指的是,通过为同一个函数提供多个函数类型定义来实现多种功能的目的。

typescript 为了兼容 js 重载的写法和 java 中有区别。

function getInfo(name: string): string 
function getInfo(age: number): number
function getInfo(str: any): any {if (typeof str === 'string') {return `我叫${str}`} else {return str}
} getInfo('张三') // 我叫张三
getInfo(19) // 19
getInfo(false) // ts编译报错
function getInfo(name: string): string 
function getInfo(name: string, age: number): string
function getInfo(name: any, age?: any): any {if (age) {return `我叫${name},年龄是${age}`} else {return `我叫${name}`}
}getInfo('张三', 19) // 我叫张三,年龄是19
getInfo('张三') // 我叫张三
getInfo('zhangsan', true) // ts编译报错
getInfo(19) // ts编译报错
http://www.lryc.cn/news/124585.html

相关文章:

  • ssm社区文化宣传网站源码和论文
  • Go语言工程实践之测试与Gin项目实践
  • 排查docker无法启动问题
  • [C++ 网络协议] 套接字和地址族、数据序列
  • AI 绘画Stable Diffusion 研究(八)sd采样方法详解
  • 线程池满了如何处理
  • Java多线程编程中的线程间通信
  • write javaBean error, fastjson version 1.2.76
  • Tomcat的部署及优化(多实例和动静分离)
  • 品牌推广革新之道:海外网红与内容营销的融合
  • 【 BERTopic应用 02/3】 分析卡塔尔世界杯推特数据
  • TypeScript教程(三)变量声明
  • 【数据结构】堆的实现,堆排序以及TOP-K问题
  • 释放马氏距离的力量:用 Python 探索多元数据分析
  • 【不限于联想Y9000P电脑关盖再打开时黑屏的解决办法】
  • 策略模式实战应用
  • JAVA集合-Map
  • 利用Simulink Test进行模型单元测试 - 1
  • 深入探讨代理技术:保障网络安全与高效爬虫
  • HDMI接口的PCB布局布线要求
  • Linux tar包安装 Prometheus 和 Grafana(知识点:systemd Unit/重定向)
  • 【Vue框架】用户和请求
  • NGINX组件(rewrite)
  • 网页显示摄像头数据的方法---基于web video server
  • SIFT 算法 | 如何在 Python 中使用 SIFT 进行图像匹配
  • K8S系列四:服务管理
  • 冠达管理:融券卖出交易规则?
  • 图像变形之移动最小二乘算法(MLS)
  • 搭建一个功能齐全的网站
  • Java-jar和war包的区别