Skip to content
Shimon's BlogShimon's Blog
主页
杂谈
  • 主页
      • 代码笔记
          • 代码学习教程
              • TypeScript 教程
                  • 进阶
                    • 元组
                      • 简单的例子
                        • 越界的元素
                          • 参考
                          • 声明合并
                            • 字符串字面量类型
                              • 扩展阅读
                                • 枚举
                                  • 泛型
                                    • 类
                                      • 类与接口
                                        • 类型别名
                                      • 如何学习一门计算机语言

                                    元组

                                    Shimon Zhan2022年4月19日
                                    • TypeScript
                                    大约 1 分钟

                                    此页内容
                                    • 简单的例子
                                    • 越界的元素
                                    • 参考

                                    数组合并了相同类型的对象,而元组(Tuple)合并了不同类型的对象。

                                    元组起源于函数编程语言(如 F#),这些语言中会频繁使用元组。

                                    # 简单的例子

                                    定义一对值分别为 string 和 number 的元组:

                                    let tom: [string, number] = ["Tom", 25];
                                    

                                    当赋值或访问一个已知索引的元素时,会得到正确的类型:

                                    let tom: [string, number];
                                    tom[0] = "Tom";
                                    tom[1] = 25;
                                    
                                    tom[0].slice(1);
                                    tom[1].toFixed(2);
                                    

                                    也可以只赋值其中一项:

                                    let tom: [string, number];
                                    tom[0] = "Tom";
                                    

                                    但是当直接对元组类型的变量进行初始化或者赋值的时候,需要提供所有元组类型中指定的项。

                                    let tom: [string, number];
                                    tom = ["Tom", 25];
                                    
                                    let tom: [string, number];
                                    tom = ["Tom"];
                                    
                                    // Property '1' is missing in type '[string]' but required in type '[string, number]'.
                                    

                                    # 越界的元素

                                    当添加越界的元素时,它的类型会被限制为元组中每个类型的联合类型:

                                    let tom: [string, number];
                                    tom = ["Tom", 25];
                                    tom.push("male");
                                    tom.push(true);
                                    
                                    // Argument of type 'true' is not assignable to parameter of type 'string | number'.
                                    

                                    # 参考

                                    • Basic Types # Tupleopen in new window(中文版open in new window)
                                    上次编辑于: 2022/4/19 07:13:07
                                    贡献者: ShimonZhan
                                    上一页
                                    进阶
                                    下一页
                                    声明合并
                                    Copyright © 2021-present Shimon Zhan