本文介绍: ts函数,Ts定义函数方法,TS快速入门函数,Ts函数,TS 定义函参剩余参数示例教程ts如何设置可选参数ts怎么设置函数返回类型ts函数重载详细教程ts函数相关操作ts function函数ts 函数语法ts通俗易懂的详细教程示例ts 默认参数 可选参数 剩余参数,TS之函数详解,带有剩余参数的Typescript 函数重载,ts剩余参数数组类型,Typescript详解,TS(三)函数与变量声明,TS的函数,ts可选参数,参数默认值,剩余参数,函数重载,TypeScript基础讲解

前言

在 Typescript 中,对 JavaScript 函数进行了 “升级”,继承了基本功能的同时又增加了一些新用法(使其更加严谨)。

一个表格可以大致描绘出异同点。

TypeScript JavaScript
含有类型 类型
箭头函数 箭头函数(ES2015)
函数类型 无函数类型
必填和可选参数 所有参数都是可选的
默认参数 默认参数
剩余参数 剩余参数
函数重载 无函数重载

这些您暂时不必搞懂,后面会有详细示例

箭头函数

这块他俩都一样,没有特别注意的地方。

TS 与 JS 示例用法如下,一样。

function fun() {
	setInterval(() => {
	    console.log('箭头函数用法');
	}, 1000)
}

参数类型 / 返回类型

在 JavaScript 中,您无法指定函数的参数类型(传什么就是什么),更无法设置返回的类型。

先来看一下 JS 中,一个典型的例子

function test(a, b) {
	return a + b;
}

再来看一下 TS,明确的参数类型与返回类型,语法简单无需多言。

// 该函数的返回值将是一个string类型
function test(name: string, age: number): string {
  return name + age;
}

// 正确示例
console.log(test('王佳斌', 55))

// 错误示例(name不是字符串,age不是数值)
// Argument of type 'number' is not assignable to parameter of type 'string'.
console.log(test(55, '王佳斌'))

可选参数 / 默认参数

TS 支持您用简洁语法,来表达可选参数及默认参数。

先来看一下 JS 中,一个典型的例子

// 很简单,不传name的话就是"默认参数",反之亦然
function fun(name = '默认参数') {
	return name;
}

而 TS 中,则这样定义

function fun(name: string = '默认参数') {
	return name;
}

// 传参与不传参
console.log(fun('我是参数!'))//我是参数
console.log(fun())//默认参数

另外,在 TS 声明函数时,可以通过 ? 号来定义可选参数。

在实际使用时,需要注意的是可选参数要放在普通参数的后面,不然会导致编译错误

// 其中,age和hok就是可选参数,你传递或不传递都行
function fun(name: string = '默认参数', age?: number, hok?: boolean) {
	return name + age + hok;
}

// 要可选参数
console.log(fun('我是参数!', 15, true))//我是参数!15true
// 不要可选参数
console.log(fun('我是参数!'))//我是参数!undefinedundefined

当然,出现 undefined 是因为我在 return 时 “无脑” 拼接了它们,正常开发时肯定会做判断的。

剩余参数

简单来说,它指的是当你的函数需要同时操作多个参数,或者 并不知道会有多少参数传递进来时,就需要用了。

在 TS 中,使用三点运算符接收,它是一个数组

// 例如:实现一个累加的函数,把一些"未知个数"的数值累加,然后打印出来
// 除了必要参数name,剩余的参数统一传入
function fun(name: string, ...items: number []) {
  // 剩余参数(接收要累加的数值,是一个数组)
  console.log(items)
  
  // 最终结果
  let result = 0

  // 循环这些数值,进行累加
  for(let i = 1; i <= items.length; i++) {
    // console.log(i)
    result += i
  }

  // 计算结果
  console.log('结果', result)
}

// 使用示例
fun('少传递一点,结果是:', 1, 2, 3)//6
fun('多传递一点,结果是:', 1, 2, 3, 4, 5, 6)//21

另外你也可以直接给函数一个剩余参数。

function fun(...items: number []) {
  // 传递过来的全部数值
  console.log(items)//[1, 2, 3]
  // 你的处理
  // ...
}

最后,在 JS 中同样也支持这么干,归功于 ES6 中引入了剩余参数。

函数重载

函数重载或方法重载,是使用相同名称和不同参数数量或类型创建多个方法的一种能力,也就是说通过为同一个函数提供多个函数类型定义来实现多种功能的目的。

用大白话说,就比如说吃饭是一个函数,但是西方人用叉子,东方人用筷子,细节有所不同,这种场景比较适合用函数重载。

允许函数接收不同数量或类型的参数时,做出不同的处理

function double(x: number | string): number | string {
    if (typeof x === 'number') {
        return x * 2;
    } else {
        return x + ', ' + x;
    }
}

本来这个函数,期望输入是 number,输出就是 number。或者输入string,输出就是 string。但是我们使用这种联合类型来书写的话,就会存在一个问题

在这里插入图片描述

如何解决这个问题呢?我们可以使用函数的重载。

function double(x: number): number; // 输入是 number 类型,输出也是 number 类型
function double(x: string): string; 
function double(x: number | string): number | string {
    if (typeof x === 'number') {
        return x * 2;
    } else {
        return x + ', ' + x;
    }
}

let d = double(1);

在这里插入图片描述

需要注意的是,函数重载是从上往下匹配,如果有多个函数定义,有包含关系的话,需要把精确的,写在最前面。

原文地址:https://blog.csdn.net/weixin_44198965/article/details/129935453

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。

如若转载,请注明出处:http://www.7code.cn/show_#ID#.html

如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱:suwngjj01@126.com进行投诉反馈,一经查实,立即删除

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注