typescript学习(二)——函数

2023-10-26

一、函数的定义

// 1. 函数声明法
// 规定返回值必须为string类型
function run():string {
	return 'im string'
}
// 2. 匿名函数法
let run = function():string {
	return 'im string'
}
// 没有返回值时
function run():void {
	return 'im string'
}

二、函数传参

es5中方法的实参和形参数目可以不一致,但ts中必须一致,当可能存在不一致情况时要配置可选参数。

// 1. 一般形式
function getInfo(name:string, age:number):string {
	return `${name} --- ${age}`
}
// 2. 可选参数 
// 在可选参数前面加上?表示这个参数可以没有
// 注意:可选参数必须在必需参数后面,即可选参数后面不允许再出现必需参数
function getInfo(name:string, age?:number):string {
	if (age) {
		return `${name} --- ${age}`
	} else {
		return `${name}`
	}
}
// 3. 默认参数
// es5中无法设置默认参数,但es6和ts中都可以设置默认参数
// 调用函数时,没有传入指定参数就默认使用设置的参数
// 注意:ts会将默认参数识别为可选参数,但其不受【可选参数必须在必需参数后面】的限制
// 3.1 ts中设置默认参数
function getInfo(name:string, age = 20):string {
	if (age) {
		return `${name} --- ${age}`
	} else {
		return `${name}`
	}
}
// 3.2 es6中设置默认参数
function getInfo(name, age = 20) {
	if (age) {
		return `${name} --- ${age}`
	} else {
		return `${name}`
	}
}

// 4. 剩余参数
// 普通情况,需要很多个形参接收参数
function sum (a:number, b:number, c:number, c:number):number {
	return a+b+c+d
}
// 用剩余参数,接收传来的多余参数
// 用数字数组表示
function sum(...res:number[]):number {
}

三、函数重载

ts中的重载,通过为同一个函数提供多个函数类型定义实现多种功能目的。
ts为了兼容es5以及es6重载的写法和java中有区别(es5中出现同名方法,下面的会替换上面的方法)。

  • 重载的意义
// 利用联合类型实现判断传入数据类型,返回对应数据的需求
function reverse(x: number | string): number | string | void {
    if (typeof x === 'number') {
        return Number(x.toString().split('').reverse().join(''));
    } else if (typeof x === 'string') {
        return x.split('').reverse().join('');
    }
}
// 但这样就不能精确表达,无法控制输出变量类型,如输入为数字时,输出应该也为数字
// 用重载增加类型控制
function reverse(x: number): number;
function reverse(x: string): string;
function reverse(x: number | string): number | string | void {
    if (typeof x === 'number') {
        return Number(x.toString().split('').reverse().join(''));
    } else if (typeof x === 'string') {
        return x.split('').reverse().join('');
    }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

typescript学习(二)——函数 的相关文章

随机推荐

  • WebUploader使用

    WebUploader用于文件的上传 文件上传过程为 网页中点击上传按钮 弹出选择文件窗口 并选择一个文件 在网页中显示选中的内容 给使用者一个反馈 点击上传按钮 文件开始上传 同时服务端开始接收文件 对于服务端而言 框架往往都有自己的接收
  • Jmeter(二十六) - 从入门到精通 - 搭建开源论坛JForum(详解教程)

    1 简介 今天这篇文章主要是给大家讲解一下 如何部署测试环境 这里宏哥部署一个开源测论坛 后边的文章中会用到这个论坛 并且也看到童鞋们在群里讨论如何在开发将测试包发给你以后 你如何快速地部署测试环境 这里就是简单的演示一下 应该具体项目灵活
  • 洛谷 P1085 不高兴的津津

    这个题目需要连续换行输入7组数据 并且对数据的最大值进行比较和提取 题目描述 津津上初中了 妈妈认为津津应该更加用功学习 所以津津除了上学之外 还要参加妈妈为她报名的各科复习班 另外每周妈妈还会送她去学习朗诵 舞蹈和钢琴 但是津津如果一天上
  • IDEA的配置JDK,Tomcat,Maven

    IDEA的配置JDK Tomcat Maven 先下载安装jdk 其中JDK为安装版 tomcat 和maven为非安装版 JDK安装完成后要设置3个坏境变量 tomcat和maven好像不设置也行 就下载下来解压就行了 maven最好还是
  • 小米android11账号补丁,小米10 MIUI11 解账户锁 可登小米账号 永不反锁 完美ROOT 解锁包...

    MIUI全机型有锁机账户锁刷机包 仅针对于有锁机用户使用 帮助已经购买到有锁机的用户 ROM版权归小米 官方所有 本人未持有任何版权 仅以分享形式发布 对ROM稳定性也不能做任何保证 如果你希望更好的系统 体验 我们非常建议购买正规渠道的小
  • 用Construct2开发一个小游戏(进阶)

    策划并用Construct2开发一个小游戏 进阶 游戏策划 楔子 Setting 公元2500年 与地球建交长达200之久的达克星球 Dark Star 单方面撕毁友好合约 对地球发起了进攻 面对源源不断的独眼怪大军 你踏入自己发明的 洋芋
  • MATLAB——读取多文件夹内文件并绘制图形(1)——逐行读取txt文件内字符串

    目录 1 添加路径 2 准备好图片名称和路径名称 3 读取txt文件中的字符串 1 添加路径 如果m文件和要读取的文件不在同一个路径下 需要借助下方代码将当前文件夹下的所有文件都包含进搜索路径中 addpath genpath F SaCo
  • Swin-Transformer

    原视频链接 https www bilibili com video BV1pL4y1v7jC spm id from 333 788 vd source f04f16dd6fd058b8328c67a3e064abd5 参考博文 2021
  • 哈夫曼编码设计(C)

    文章目录 前言 哈夫曼编码设计 总结 前言 大二 刚刚开始学数据结构与算法 写得不好 哈夫曼编码设计 现要求输入8个字符 a b c d e f g h 对应的权值 大于0的整数 然后设计哈夫曼编码实现输入对应8个字符组成的一串字符 字符串
  • centos 网络连接设置

    这里使用虚拟机 VirtualBox 来安装CentOS 6 3 32bit服务器版本 没有安装桌面 作为演示 所以全是命令操作 如何安装CentOS操作系统就不用我说的 虚拟机网络设置为桥接模式 Bridge 单独分配ip 不共享主机ip
  • 致命错误:Rdefines.h:没有那个文件或目录

    致命错误 Rdefines h 没有那个文件或目录 Rdefines h No such file or directory 关键词 CentOS 7 安装rpy2 pip3 install rpy2报错 python3 setup py
  • C#——字符串

    System String类 1 创建字符串 string s abcdefg 2 获取字符串长度 s Length 3 比较字符串是否一样 s abcd 4 字符串连接 s http s 5 使用类似索引器的语法来取得字符串中的某个字符
  • Android常见漏洞

    Android常见漏洞 漏洞名称 Log敏感信息泄露 漏洞描述 程序运行期间打印了用户的敏感信息 造成泄露 修改建议 建议禁止隐私信息的log 漏洞名称 web https校验错误忽略漏洞 漏洞描述 漏洞可导致中间人攻击 修改建议 建议不要
  • JAVA基础练习题

    1 生成两个1 10的随机数 分别作为两个数组的长度 2 向第一个数组中以循环键盘录入的方式添加元素 3 生成1 100之间的随机数 为第二个数组的每个元素赋值 4 将两个数组合并 为一个新的数组 5 去掉新数组的最大值和最小值 求平均值
  • vue之--使用TypeScript

    搭配 TypeScript 使用 Vue 像 TypeScript 这样的类型系统可以在编译时通过静态分析检测出很多常见错误 这减少了生产环境中的运行时错误 也让我们在重构大型项目的时候更有信心 通过 IDE 中基于类型的自动补全 Type
  • C++ 好用的日志库--spdlog

    背景 spdlog 是一个快速 异步的 header only 的 C 日志库 它提供了简单易用的 API 并具有高性能和可扩展性 下载和使用 下载 spdlog 库下载地址 github 链接 hello world 在使用时只需要 in
  • 设计模式:模板方法模式

    定义一个操作中算法的框架 而将一些步骤延迟到子类中 使得子类可以不改变算法的结构即可重定义该算法中的某些特定步骤 类图如下 事实上 模版方法是编程中一个经常用到的模式 先来看一个例子 某日 程序员A拿到一个任务 给定一个整数数组 把数组中的
  • 常用的函数式接口

    1 Supplier接口 仅包含一个无参的方法 T get 用来获取一个泛型参数指定类型的数据 2 Consumer接口 包含抽象方法 void accept T t 正好与Supplier相反 它不是生产一个数据 而是 消费一个数据 其数
  • web安全--环境搭建

    1 搭建环境 下载owasp靶机测试环境 login root password owaspbwa 下载kali linux攻击机也可以使用windows作为攻击机 我的是2020 login kaili password kali 其他版
  • typescript学习(二)——函数

    一 函数的定义 1 函数声明法 规定返回值必须为string类型 function run string return im string 2 匿名函数法 let run function string return im string 没