TypeScript 函数

函数基础

在 TypeScript 中,函数的定义方式与 JavaScript 类似,但是可以添加类型注解来增强函数的类型安全性。例如:

typescript 复制代码
function greet(name: string): string {
    return `Hello, ${name}!`;
}

上面的例子定义了一个名为 greet 的函数,接受一个参数 name,类型为 string,并返回一个字符串。通过类型注解,我们告诉 TypeScript 这个函数的输入参数和返回值的类型,从而在编译期间进行类型检查。

可选参数和默认参数

在 TypeScript 中,我们可以使用可选参数和默认参数来使函数调用更加灵活。例如:

typescript 复制代码
function greet(name: string, greeting?: string): string {
    if (greeting) {
        return `${greeting}, ${name}!`;
    } else {
        return `Hello, ${name}!`;
    }
}

greet("Alice"); // 输出:Hello, Alice!
greet("Bob", "Good morning"); // 输出:Good morning, Bob!

上面的例子中,greeting 参数被标记为可选参数,因此在调用函数时可以省略。如果不提供 greeting 参数,则默认使用 "Hello"。

剩余参数

除了可选参数和默认参数之外,TypeScript 还支持剩余参数,允许我们接受任意数量的参数。例如:

typescript 复制代码
function sum(...numbers: number[]): number {
    return numbers.reduce((acc, val) => acc + val, 0);
}

console.log(sum(1, 2, 3, 4, 5)); // 输出:15

在上面的例子中,...numbers 表示剩余参数,它将接受传递给函数的所有参数并将它们收集到一个数组中。

函数类型

在 TypeScript 中,函数也是一种类型,我们可以使用函数类型来声明变量或参数的类型。例如:

typescript 复制代码
type GreetFunction = (name: string) => string;

const greet: GreetFunction = (name) => `Hello, ${name}!`;

console.log(greet("Alice")); // 输出:Hello, Alice!

上面的例子中,我们使用 type 关键字定义了一个名为 GreetFunction 的函数类型,它接受一个 string 类型的参数并返回一个 string 类型的值。然后,我们声明一个名为 greet 的变量,其类型为 GreetFunction,并赋值一个符合该类型的函数。

泛型函数

泛型是 TypeScript 中非常强大和灵活的特性之一,它可以使函数更加通用和灵活。例如:

typescript 复制代码
function identity<T>(arg: T): T {
    return arg;
}

console.log(identity("Hello")); // 输出:Hello
console.log(identity(42)); // 输出:42

在上面的例子中,identity 函数接受一个参数 arg,并返回该参数。通过 <T>,我们声明了一个泛型类型 T,使得该函数可以接受任意类型的参数,并返回相同类型的值。

函数重载

函数重载是指在 TypeScript 中可以根据不同的参数类型或数量来调用同名函数,以实现不同的行为。例如:

typescript 复制代码
function reverse(x: string): string;
function reverse(x: number): number;
function reverse(x: string | number): string | number {
    if (typeof x === "string") {
        return x.split("").reverse().join("");
    } else {
        return Number(x.toString().split("").reverse().join(""));
    }
}

console.log(reverse("hello")); // 输出:olleh
console.log(reverse(12345)); // 输出:54321

在上面的例子中,我们定义了两个函数重载,分别接受 string 类型和 number 类型的参数,并实现了不同的逻辑。

相关推荐
来之梦37 分钟前
uniapp中 uni.previewImage用法
前端·javascript·uni-app
野猪佩奇00744 分钟前
uni-app使用ucharts地图,自定义Tooltip鼠标悬浮显示内容并且根据@getIndex点击事件获取点击的地区下标和地区名
前端·javascript·vue.js·uni-app·echarts·ucharts
生活、追梦者1 小时前
html+css+JavaScript 实现两个输入框的反转动画
javascript·css·html
星辰中的维纳斯2 小时前
vue新手入门教程(项目创建+组件导入+VueRouter)
前端·javascript·vue.js
ksuper&2 小时前
ts和js的关系
javascript
NaRciCiSSuS2 小时前
第一章-JavaScript简介
开发语言·javascript·ecmascript
XF鸭3 小时前
HTML-CSS 入门介绍
服务器·前端·javascript
噫吁嚱!!!3 小时前
Linux安装elasticsearch单机版
linux·运维·ubuntu
forwardMyLife3 小时前
element-plus 的form表单组件之el-radio(单选按钮组件)
前端·javascript·vue.js
ilisi_4 小时前
导航栏样式,盒子模型
前端·javascript·css