在现代前端开发中,TypeScript 已经成为了不可或缺的工具。它不仅为 JavaScript 带来了强大的类型系统,还提供了许多实用的类型特性。今天,我们就来深入了解 TypeScript 中的数组和元组类型,看看如何正确使用它们来提升代码质量。
在 TypeScript 中,最规范的数组定义方式是使用泛型语法Array<元素类型>
:
let val: Array<number>;
val = [1, 3, 5];
console.log(val);
数值类型数组示例
如果尝试在数值数组中添加其他类型的元素,TypeScript 会立即给出错误提示:
let val: Array<number>;
val = [1, 3, 'a'];
console.log(val);
类型错误示例
对于简单的数组类型,我们可以使用更简洁的类型[]
语法:
let val: string[];
val = ['c', 'b', 'a'];
console.log(val);
字符串数组示例
同样,类型检查也会严格执行:
let val: string[];
val = [1, 'b', 'a'];
console.log(val);
类型错误示例
有时我们需要数组中存储多种类型的数据,这时可以使用联合类型:
let val: (number | string)[];
val = [1, 'b', 'a'];
console.log(val);
联合类型示例
但要注意,联合类型仍然有其限制:
let val: (number | string)[];
val = [1, 'b', 'a', false];
console.log(val);
联合类型错误示例
如果确实需要完全的类型灵活性,可以使用any[]
:
let val: any[];
val = [1, 'b', 'a', false];
console.log(val);
任意类型数组示例
元组(Tuple)是 TypeScript 的特色功能,它允许我们定义一个固定长度和固定类型序列的数组:
let val: [string, number, boolean];
val = ['BNTang', 18, true];
console.log(val);
元组类型示例
元组类型有两个重要的限制:
let val: [string, number, boolean];
val = ['BNTang', 18, true, false];
console.log(val);
元组长度错误示例
let val: [string, number, boolean];
val = [18, 'BNTang', true];
console.log(val);
any[]
类型[]
这种简洁的语法TypeScript 的数组和元组类型系统为我们提供了强大的类型检查能力:
掌握这些类型特性,能够帮助我们写出更健壮的 TypeScript 代码。