typeScript4(函数)

本文介绍了JavaScript中如何使用函数类型、接口进行函数定义,包括参数的可选性、默认值设定,以及如何通过函数重载处理不同参数组合。着重讲解了类型限制的重要性及编译器在处理函数调用时的角色。

函数类型

//注意,参数不能多传,也不能少传 必须按照约定的类型来
const fn = (name: string, age:number): string => {
    return name + age
}

用接口定义函数类型

采用函数表达式接口定义函数的方式时,对等号左侧进行类型限制,可以保证以后对函数名赋值时保证参数个数、参数类型、返回值类型不变。

 interface SearchFunc{

        (source: string, subString: string): boolean;

}

可选参数

注意点:可选参数后面不允许再出现必需参数

//通过?表示该参数为可选参数
const fn = (name: string, age?:number): string => {
    return name + age
}

参数默认值

 const fn = (name: string = "我是默认值"): string => {
    return name
}
fn()

剩余参数

function push(array: any[], ...items: any[]) {
    items.forEach(function(item) {
        array.push(item);
    });
}
let a = [];
push(a, 1, 2, 3);

函数重载 

重载是方法名字相同,而参数不同,返回类型可以相同也可以不同。

解决:为同一个函数提供多个函数类型定义来进行函数重载,编译器会根据这个列表去处理函数的调用。

//如果参数类型不同,则参数类型应设置为 any

//参数数量不同你可以将不同的参数设置为可选。

function fn(params: number): void
 
function fn(params: string, params2: number): void
 
function fn(params: any, params2?: any): void {
 
    console.log(params)
 
    console.log(params2)
 
}

<think>首先,用户的问题是:“我想查找TypeScript的内置函数 请问TypeScript内置函数有哪些”,意思是“我想查找TypeScript的内置函数,请问TypeScript内置函数有哪些”。 系统级指令要求: - 所有行内数学表达式使用$...$格式(但在这个语境中,可能不涉及数学表达式,因为主题是TypeScript)。 - 独立公式使用$$...$$格式并单独成段(同样,可能不适用)。 - LaTeX语法正确。 - 使用中文回答。 - 生成相关问题。 - 回答中引用的段落末尾自然地添加引用标识,例如[^1]。 用户提供的引用: - 引用[1]:关于TypeScript函数,提到剩余参数和函数重载。 - 引用[2]:关于TypeScript的内置数据类型,如枚举。 用户上一次的问题和我的回答:用户的上一次问题是关于TypeScript的内置数据类型,但现在查询的是内置函数。所以,我需要基于当前问题回答。之前的回答是关于内置数据类型的,但现在焦点是函数。 用户真正的需求是查找TypeScript的内置函数。内置函数不是TypeScript语言本身的一部分;TypeScript是JavaScript的超集,所以它继承了JavaScript的内置函数TypeScript添加了类型系统,但不添加新的内置函数。因此,我需要澄清这一点。 关键点: - TypeScript本身没有额外的内置函数;它使用JavaScript的内置函数。 - JavaScript的内置函数包括全局函数(如eval, parseInt, parseFloat等)和对象方法(如Array.prototype.map, String.prototype.indexOf等)。 - 在TypeScript中,这些函数有类型定义。 用户可能误解了“内置函数”。在引用[1]中提到了函数定义(如剩余参数和重载),但那是用户定义的函数,不是内置的。引用[2]是关于内置数据类型。 所以,我应该解释: - TypeScript的内置函数实际上是JavaScript的内置函数。 - 列出一些常见的JavaScript内置全局函数和方法。 - 强调TypeScript提供了类型安全。 回答结构: 1. 澄清TypeScript的内置函数的概念。 2. 列出主要的内置全局函数。 3. 提到对象的内置方法。 4. 使用中文。 5. 生成相关问题。 6. 自然地添加引用标识。 引用来源: - 引用[1]是关于函数定义的,可以用于说明如何在TypeScript中使用函数。 - 引用[2]是关于数据类型的,可能与函数参数相关。 我需要自然地引用这些。既然用户提供了它们,我应该融入回答中。 可能的回答大纲: - 开头:TypeScript本身没有额外的内置函数;它继承了JavaScript的内置函数。 - 列出一些JavaScript内置函数:如eval, parseInt, parseFloat, isNaN, isFinite等。 - 提到对象方法:如Math对象的方法(Math.floor, Math.sin等),Array, String等的方法。 - 解释在TypeScript中,这些函数有类型定义。 - 从引用[1]中,可以提到函数参数和重载,但那些是用户定义的,不是内置。 - 从引用[2]中,枚举是数据类型,不是函数。 生成相关问题: - 基于主题,如: 1. 如何在TypeScript中使用JavaScript内置函数? 2. TypeScript函数的类型定义是什么? 3. 什么是函数重载在TypeScript中? 最终回答组织: - 清晰结构:解释概念,然后列出函数。 - 在末尾添加相关问题。 - 使用引用标识:[^1]和[^2]。 完整回答: </think>### TypeScript内置函数概述 在TypeScript中,“内置函数”本质上是指继承自JavaScript的标准内置函数,因为TypeScript是JavaScript的超集,添加了静态类型系统但不引入新的内置函数[^1]。这些函数分为两大类: 1. **全局函数**:直接可在全局作用域调用。 2. **对象方法**:绑定到内置对象(如`Math`、`Array`、`String`等)上的方法。 TypeScript为这些函数提供了类型定义,例如参数类型和返回类型,确保类型安全(如引用[1]中提到的函数参数类型定义)。下面我将列出常见内置函数,并附上简要说明。 #### 1. 全局内置函数 这些函数可直接调用,无需指定对象: - `parseInt(string, radix?)`: 将字符串转换为整数,可指定进制(默认十进制)。例如:`parseInt("10")` 返回 `10`。 - `parseFloat(string)`: 将字符串转换为浮点数。例如:`parseFloat("3.14")` 返回 `3.14`。 - `isNaN(value)`: 检查值是否为“非数字”(NaN)。例如:`isNaN("hello")` 返回 `true`。 - `isFinite(number)`: 检查值是否为有限数(非无穷大或NaN)。例如:`isFinite(Infinity)` 返回 `false`。 - `eval(string)`: 执行字符串中的JavaScript代码(不推荐使用,因安全风险)。 - `encodeURI(uri) / decodeURI(uri)`: 对URI进行编码/解码。 - `encodeURIComponent(uriComponent) / decodeURIComponent(uriComponent)`: 对URI组件进行编码/解码。 在TypeScript中,这些函数有严格类型定义。例如,`parseInt`的签名类似于: ```typescript function parseInt(string: string, radix?: number): number; ``` #### 2. 对象的内置方法 这些方法属于特定内置对象,需通过对象调用: - **`Math`对象方法**:数学计算函数。 - `Math.abs(x)`: 返回绝对值(例如:`Math.abs(-5)` → `5`)。 - `Math.floor(x)`: 向下取整(例如:`Math.floor(3.7)` → `3`)。 - `Math.random()`: 生成[0, 1)范围内的随机数。 - `Math.sin(x)`, `Math.cos(x)`:三角函数(例如:`Math.sin(Math.PI/2)` → `1`)。 - **`Array`对象方法**:数组操作。 - `Array.isArray(value)`: 检查值是否为数组。 - `array.map(callback)`: 遍历数组并返回新数组(例如:`[1,2,3].map(x => x*2)` → `[2,4,6]`)。 - `array.filter(callback)`: 过滤数组元素。 - **`String`对象方法**:字符串处理。 - `string.indexOf(searchString)`: 查找子字符串位置。 - `string.replace(searchValue, replaceValue)`: 替换子字符串。 - `string.toLowerCase()`: 转换为小写。 TypeScript还为这些方法添加类型约束。例如,`array.map`的类型可能定义为: ```typescript interface Array<T> { map<U>(callbackfn: (value: T, index: number, array: T[]) => U): U[]; } ``` 注意:枚举(如引用[2]中的`enum Color {Red, Green, Blue}`)是数据类型而非函数,常用于函数参数中以增强可读性[^2]。 ### 注意事项 - TypeScript没有“专属内置函数”,所有函数均源自JavaScript,但通过TypeScript的类型系统(如函数重载和剩余参数)提升了安全性[^1]。 - 实际开发中,建议使用TypeScript文档或`lib.d.ts`文件查看完整函数定义。 - 如需自定义函数,可使用TypeScript特性如可选参数(`y?: number`)和剩余参数(`...rest: any[]`),如引用[1]所示。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值