06_TypeScript 中的函数

TypeScript 中的函数

  • 一、函数的定义
      • es5 定义函数的方法
      • TypeScript 定义函数的方法
      • ts 中定义方法传参
  • 二、可选参数
  • 三、默认参数(跟可选参数一样)
  • 四、剩余参数(三点运算符的应用)
  • 五、函数重载
  • 六、箭头函数 es6

一、函数的定义

es5 定义函数的方法

// 函数声明
function run(){return "run"
} 
// 匿名函数
var run4 = function(){return "run4"
}

TypeScript 定义函数的方法

// 函数声明
function run():string {return "run"
} 
// 匿名函数
var run2 = function():number{return 100
}
console.log(run2())// 调用方法

ts 中定义方法传参

返回值和参数都有类型

//传参
function getInfo(name: string, age:number):string{return `${name}---${age}`
}// console.log(getInfo('zs', 'li'))//错误写法,编译不通过
console.log(getInfo('zs', 20))
//匿名函数定义传参
let getInfo2=function(name: string, age:number):string{return `${name}---${age}`
}
console.log(getInfo2('zs', 20))
//没有返回值的方法
function run2():void{console.log("run2")
}
run2()

二、可选参数

es5 里面的方法的实参和形参 可以不一样,但是ts 中必须要一样,如果不一样就需要配置可选参数(使用 问号?)

function getInfo(name: string, age?:number):string{if(age) {return `${name}---${age}`} else {return `${name}---保密`}}
console.log(getInfo('zs'))
console.log(getInfo('zs', 20))

注意:可选参数必须配置到参数的最后面,以下是一个错误写法,ts 编译不通过
在这里插入图片描述

function getInfo(name?: string, age:number):string{if(age) {return `${name}---${age}`} else {return `${name}---保密`}}
console.log(getInfo('zs'))

三、默认参数(跟可选参数一样)

es5 里面没法设置默认参数,es6 和ts 中都可以设置默认参数

function getInfo(name: string, age:number = 20):string{if(age) {return `${name}---${age}`} else {return `${name}---保密`}}
console.log(getInfo('zs'))

四、剩余参数(三点运算符的应用)

function sum(a:number, b:number, c:number):number {return a+b+c
}
console.log(sum(1,2,3))//6//三点运算符 接收形参传过来的值
function sum2(...result:number[]):number {let sum = 0;for(let i = 0; i< result.length; i++) {sum += result[i]}return sum
}
console.log(sum2(1,2,3,7,8,8,0))//29function sum3(a:number,...result:number[]):number {let sum = a;for(let i = 0; i< result.length; i++) {sum += result[i]}return sum
}
console.log(sum3(1,2,3,7,8,8,0))//29

五、函数重载

java 中方法的重载:重载指的是两个或者两个以上同名函数,但它们的参数不一样,这时会出现函数重载的情况
TypeScript 中的重载:通过同一个函数提供多个函数类型定义来实现多种功能的目的(同样的方法,不同的参数,实现不同的功能)
ts 为了兼容 es5 和 es6 重载的写法和java 中有区别

//es5 中出现同名方法,下面的会替换上面的方法
function css(config:any) {}
function css(config, value) {}
//ts 中的重载--- 参数不一样
function getInfo3(name:string):string;
function getInfo3(age:number):number;
function getInfo3(str:any):any {if(typeof str === 'string') {return "我叫"+str} else {return "我的年龄是:"+str}
}
console.log(getInfo3('zs'))// 正确写法
console.log(getInfo3(12))// 正确写法
// console.log(getInfo3(true))// 错误写法
function getInfo4(name:string):string;
function getInfo4(name:string, age:number):number;
function getInfo4(name:any, age?:any):any {if(typeof age === 'string') {return "我叫"+name +"我的年龄是:"+age} else {return "我叫"+name}
}
console.log(getInfo4('zs'))// 正确写法
console.log(getInfo4('sansan',12))// 正确写法
console.log(getInfo4(12))// 错误写法

六、箭头函数 es6

this 指向的问题,箭头函数里面的 this 指向上下文

// es5的写法
setTimeout(function(){console.log("异步任务,es5的写法")
},1000)// es6 箭头函数, this 指向上下文
setTimeout(()=>{console.log("异步任务,es5的写法")
},1000)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/44350.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【持续集成_05课_Linux部署SonarQube及结合开发项目部署】

一、Linux下安装SonarQube 1、安装sonarQube 前置条件&#xff1a;sonarQube不能使用root账号进行启动&#xff0c;所以需要创建普通用户及 其用户组 1&#xff09;创建组 2&#xff09;添加用户、组名、密码 3&#xff09;CMD上传qube文件-不能传到home路径下哦 4&#xff09…

王牌站士Ⅳ--矢量数据库对 RAG 效率的影响

前言 近年来&#xff0c;检索增强生成 (RAG) 模型越来越受欢迎。RAG 模型利用大型神经网络以及外部知识源的检索机制。这使得模型拥有的知识比其内部存储的更多&#xff0c;从而使其能够为广泛的主题和领域生成高质量的输出。 影响 RAG 模型性能的关键因素之一是从外部源检索相…

【启明智显分享】ESP32-S3 4.3寸触摸串口屏HMI应用方案:WIFI/蓝牙无线通信助力烘干设备实现远程遥控

技术不断进步&#xff0c;人们对烘干设备的美观度、功能多样性提出更高要求&#xff0c;传统的数码管显示、按键式控制已经无法满足客户的需求。用智能屏替代传统的数码管可以很好的解决这个问题&#xff0c;为用户带来更好的人机交互体验。 基于此&#xff0c;启明智显提出将乐…

C++基础(十八):继承(重点)

各位看官&#xff0c;大家好&#xff01;今天我们将探讨C中的三大特性之一&#xff1a;继承。继承是一种面向对象编程的重要概念&#xff0c;它允许我们通过创建新的类&#xff0c;从而复用和扩展现有类的功能。通过继承&#xff0c;我们不仅能够提高代码的可重用性和可维护性&…

9.5 栅格图层符号化多波段彩色渲染

文章目录 前言多波段彩色渲染QGis设置为多波段彩色二次开发代码实现多波段彩色 总结 前言 介绍栅格图层数据渲染之多波段彩色渲染说明&#xff1a;文章中的示例代码均来自开源项目qgis_cpp_api_apps 多波段彩色渲染 以“3420C_2010_327_RGB_LATLNG.tif”数据为例&#xff0c…

常见条件控制算法流程图

内容讲解&#xff1a;流程控制[if…else…(if…elif…else…),while,for] 常见条件控制算法流程图高清图

新手教学系列——高效管理MongoDB数据:批量插入与更新的实战技巧

前言 在日常开发中,MongoDB作为一种灵活高效的NoSQL数据库,深受开发者喜爱。然而,如何高效地进行数据的批量插入和更新,却常常让人头疼。今天,我们将一起探讨如何使用MongoDB的bulk_write方法,简化我们的数据管理流程,让代码更加简洁高效。 常规做法:find、insertone…

【Linux】常见指令收官权限理解

tar指令 上一篇博客已经介绍了zip/unzip指令&#xff0c;接下来我们来看一下另一个关于压缩和解压的指令&#xff1a;tar指令tar指令&#xff1a;打包/解包&#xff0c;不打开它&#xff0c;直接看内容 关于tar的指令有太多了&#xff1a; tar [-cxtzjvf] 文件与目录 ...…

C++运行时类型识别

目录 C运行时类型识别A.What&#xff08;什么是运行时类型识别RTTI&#xff09;B.Why&#xff08;为什么需要RTTI&#xff09;C.dynamic_cast运算符Why&#xff08;dynamic_cast运算符的作用&#xff09;How&#xff08;如何使用dynamic_cast运算符&#xff09; D.typeid运算符…

各地户外分散视频监控点位,如何实现远程集中实时监看?

公司业务涉及视频监控项目承包搭建&#xff0c;此前某个项目需求是为某林业公司提供视频监控解决方案&#xff0c;需要实现各地视频摄像头的集中实时监看&#xff0c;以防止国家储备林的盗砍、盗伐行为。 公司原计划采用运营商专线连接各个视频监控点位&#xff0c;实现远程视…

跟着李沐学AI:线性回归

引入 买房出价需要对房价进行预测。 假设1&#xff1a;影响房价的关键因素是卧室个数、卫生间个数和居住面积&#xff0c;记为x1、x2、x3。 假设2&#xff1a;成交价是关键因素的加权和 。权重和偏差的实际值在后面决定。 拓展至一般线性模型&#xff1a; 给定n维输入&…

MySQL 9.0 正式发行Innovation创新版已支持向量

从 MySQL 8.1 开始&#xff0c;官方启用了新的版本模型&#xff1a;MySQL 创新版 (Innovation) 和长期支持版 (LTS)。 根据介绍&#xff0c;两者的质量都已达到可用于生产环境级别。区别在于&#xff1a; 如果希望尝试最新的功能和改进&#xff0c;并喜欢与最新技术保持同步&am…

怎样在 C 语言中实现栈?

&#x1f345;关注博主&#x1f397;️ 带你畅游技术世界&#xff0c;不错过每一次成长机会&#xff01; &#x1f4d9;C 语言百万年薪修炼课程 通俗易懂&#xff0c;深入浅出&#xff0c;匠心打磨&#xff0c;死磕细节&#xff0c;6年迭代&#xff0c;看过的人都说好。 文章目…

动手学深度学习(Pytorch版)代码实践 -循环神经网络-55循环神经网络的从零开始实现和简洁实现

55循环神经网络的实现 1.从零开始实现 import math import torch from torch import nn from torch.nn import functional as F from d2l import torch as d2l import matplotlib.pyplot as plt import liliPytorch as lp# 读取H.G.Wells的时光机器数据集 batch_size, num_ste…

ElasticSearch第一天

学习目标&#xff1a; 能够理解ElasticSearch的作用能够安装ElasticSearch服务能够理解ElasticSearch的相关概念能够使用Postman发送Restful请求操作ElasticSearch能够理解分词器的作用能够使用ElasticSearch集成IK分词器能够完成es集群搭建 第一章 ElasticSearch简介 1.1 什么…

只会vue的前端开发工程师是不是不能活了?最近被一个flutter叼了

**Vue与Flutter&#xff1a;前端开发的新篇章** 在前端开发的世界里&#xff0c;Vue.js和Flutter无疑是两颗璀璨的明星。Vue以其轻量级、易上手的特点吸引了大量前端开发者的青睐&#xff0c;而Flutter则以其跨平台、高性能的优势迅速崛起。那么&#xff0c;对于只会Vue的前端…

【深度学习基础】环境搭建 linux系统下安装pytorch

目录 一、anaconda 安装二、创建pytorch1. 创建pytorch环境&#xff1a;2. 激活环境3. 下载安装pytorch包4. 检查是否安装成功 一、anaconda 安装 具体的安装说明可以参考我的另外一篇文章【环境搭建】Linux报错bash: conda: command not found… 二、创建pytorch 1. 创建py…

OceanBase:引领下一代分布式数据库技术的前沿

OceanBase的基本概念 定义和特点 OceanBase是一款由蚂蚁金服开发的分布式关系数据库系统&#xff0c;旨在提供高性能、高可用性和强一致性的数据库服务。它结合了关系数据库和分布式系统的优势&#xff0c;适用于大规模数据处理和高并发业务场景。其核心特点包括&#xff1a; …

python调用阿里云汇率接口

整体请求流程 介绍&#xff1a; 本次解析通过阿里云云市场的云服务来实现程序中对货币汇率实时监控&#xff0c;首先需要准备选择一家可以提供汇率查询的商品。 https://market.aliyun.com/apimarket/detail/cmapi00065831#skuyuncode5983100001 步骤1: 选择商品 如图点击…

debian 12 Install

debian 前言 Debian是一个基于Linux内核的自由和开放源代码操作系统&#xff0c;由全球志愿者组成的Debian项目维护和开发。该项目始于1993年&#xff0c;由Ian Murdock发起&#xff0c;旨在创建一个完整的、基于Linux的自由软件操作系统。 debian download debian 百度网盘…