攀爬TS之路(三) 数组类型、元组类型

简介: 攀爬TS之路(三) 数组类型、元组类型

数组类型

数组类型有多种定义方式。

普通法

这个方法基本上和其他静态语言的使用差不多

数组使用联合类型(这个看的教程没有这种用法,有问题可以评论交流)

数组泛型

使用数组泛型(Array<type>)来定义数组。

let nums: Array<number | string> = [1, 2, 3]

nums.push(2)
nums.push('3')

console.log(nums)       //  [1, 2, 3, 2, '3']

nums.push(true)     // 这里报错,因为定义的数组类型里不包括`boolean`类型

接口

数组就是一个特殊的对象,它的键是数字,且是从0开始。所以我们也可以使用接口来表示数组。

interface IArray {
    [index: number]: number | string
}

const arr: IArray = [1, 2, 'hello']

console.log(arr)

使用接口表示数组有很大问题:不能调用数组的方法

没想到好的解决方案,有想法的可以评论一下(虽然不建议用这个)

元组类型

元组在赋值时,需要提供元组类型中指定的项。

const tuple: [number, string, number | string] = [1, '2', 'hello']  // 正常

// const tuple: [number, string, number | string] = [1, '2']   // 报错:不能将类型“[number, string]”分配给类型“[number, string, string | number]”。源具有 2 个元素,但目标需要 3 个。

// const tuple: [number, string, number | string] = [1, '2', 'hello', 4]   // 不能将类型“[number, string, string, number]”分配给类型“[number, string, string | number]”。源具有 4 个元素,但目标仅允许 3 个。

这么一看,就像是一个固定大小和元素类型的数组。
但是,因为TS是JS的超集,所以元组能够使用数组的方法,即我们可以通过数组的方法让该元组不再固定大小。(这里说实在有点迷,赋值的时候元组大小固定,调方法又能让元组大小不固定)

let tuple: [number, string, number | string]

tuple = [1, 'hello', 3]

tuple.push('123')
console.log(tuple)  //  [1, 'hello', 3, '123']

当我们添加越界的元素时,类型会被限制成元组中每个类型的联合类型。

let tuple: [number, boolean]

tuple = [1, true]

tuple.push(true) //  允许越界

tuple.push('123')   // 报错:允许越界。但是越界的元素需要是元组中每个类型的联合类型
console.log(tuple)  
目录
相关文章
|
8月前
|
JavaScript 前端开发
揭秘 TypeScript 条件类型:超越简单类型检查
揭秘 TypeScript 条件类型:超越简单类型检查
|
8月前
|
JavaScript 安全 索引
TypeScript 高级类型工具:Partial, Required, Record 的妙用与陷阱
TypeScript 高级类型工具:Partial, Required, Record 的妙用与陷阱
|
8月前
|
JavaScript 安全 IDE
TypeScript 类型体操:别让 `any` 毁了你的安全网!
TypeScript 类型体操:别让 `any` 毁了你的安全网!
|
存储 安全 JavaScript
TypeScript-内置应用程序类型-Recode
通过使用 `Record` 类型,开发者可以显著提升代码的安全性和可维护性。无论是配置对象、字典结构还是动态表单,`Record` 类型都提供了一个简洁、类型安全的解决方案。
522 82
|
8月前
|
JavaScript 安全 编译器
TypeScript 类型守卫:让你的类型系统更智能
TypeScript 类型守卫:让你的类型系统更智能
|
JavaScript 前端开发 安全
深入理解TypeScript:增强JavaScript的类型安全性
【10月更文挑战第8天】深入理解TypeScript:增强JavaScript的类型安全性
422 0
|
JavaScript 前端开发 开发者
深入理解TypeScript:类型系统与实用技巧
【10月更文挑战第8天】深入理解TypeScript:类型系统与实用技巧
|
存储 JavaScript
typeScript进阶(11)_元组类型
本文介绍了TypeScript中的元组(Tuple)类型,它是一种特殊的数组类型,可以存储不同类型的元素。文章通过示例展示了如何声明元组类型以及如何给元组赋值。元组类型在定义时需要指定数组中每一项的类型,且在赋值时必须满足这些类型约束。此外,还探讨了如何给元组类型添加额外的元素,这些元素必须符合元组类型中定义的类型联合。
209 0
|
JavaScript 前端开发 安全
使用 TypeScript 加强 React 组件的类型安全
【10月更文挑战第1天】使用 TypeScript 加强 React 组件的类型安全
351 106
|
设计模式 JavaScript 安全
TypeScript性能优化及代码质量提升的重要性、方法与策略,包括合理使用类型注解、减少类型断言、优化模块导入导出、遵循编码规范、加强代码注释等
本文深入探讨了TypeScript性能优化及代码质量提升的重要性、方法与策略,包括合理使用类型注解、减少类型断言、优化模块导入导出、遵循编码规范、加强代码注释等,旨在帮助开发者在保证代码质量的同时,实现高效的性能优化,提升用户体验和项目稳定性。
455 6