迹忆客 专注技术分享

当前位置:主页 > 学无止境 > 编程语言 > TypeScript >

TypeScript 中声明只接受特定值的数组

作者:迹忆客 最近更新:2023/01/12 浏览次数:

使用联合类型来声明一个只接受特定值的数组,例如 const arr2: ('a' | 'b' | 'c')[] = []。 联合类型由两个或多个其他类型或文字组成。 示例中的数组只能包含字符串 abc

type NumbersLessThan5 = 1 | 2 | 3 | 4;

const arr: NumbersLessThan5[] = [];

arr.push(1);
arr.push(2);
arr.push(3);
arr.push(4);

我们使用联合类型来创建一个只接受特定值的数组。

示例中的数组只能包含数字 1-4。 如果我们尝试将一个不包含在联合类型中的数字添加到数组中,我们会得到一个错误。

type NumbersLessThan5 = 1 | 2 | 3 | 4;

const arr: NumbersLessThan5[] = [];

// ⛔️ Error: Argument of type '5' is not
// assignable to parameter of type 'NumbersLessThan5'.ts(2345)
arr.push(5);

typescript Argument of type '5' is not assignable to parameter

这在使用字符串文字时以相同的方式工作。

type FirstThreeLetters = 'a' | 'b' | 'c';

const arr2: FirstThreeLetters[] = [];

arr2.push('a');
arr2.push('b');
arr2.push('c');

// ⛔️ Error: Argument of type '"d"' is not
// assignable to parameter of type 'FirstThreeLetters'.ts(2345)
arr2.push('d');

这些值不必是同一类型。 在不太可能出现的混合数组情况下,我们可以使用相同的方法。

type Mixed = 'a' | 'b' | 1;

const arr2: Mixed[] = [];

arr2.push('a');
arr2.push('b');

arr2.push(1);

联合类型在 TypeScript 中非常有用,实际上布尔类型只是联合 true | false 的别名。

转载请发邮件至 1244347461@qq.com 进行申请,经作者同意之后,转载请以链接形式注明出处

本文地址:

相关文章

在 C 语言中获取字符数组的长度

发布时间:2023/05/07 浏览次数:166 分类:C语言

本文演示了如何在 C 语言中获取一个 char 数组的长度。使用 sizeof 运算符来查找字符数组的长度 数组的大小可以用 sizeof 运算符计算,而不考虑元素的数据类型。

在 C 语言中初始化字符数组

发布时间:2023/05/07 浏览次数:158 分类:C语言

本文介绍了如何在 C 语言中初始化字符数组。使用 {} 卷曲括号列表符号在 C 语言中初始化一个字符数组

C 语言中复制字符数组

发布时间:2023/05/07 浏览次数:117 分类:C语言

本文介绍了如何在 C 语言中复制字符数组。使用 memcpy 函数在 C 语言中复制一个字符数组 char 数组可能是 C 代码中最常用的数据结构,复制数组内容是它的核心操作之一。

Django ArrayField 数组字段

发布时间:2023/05/04 浏览次数:168 分类:Python

在本文中,我们将学习在 Django 数据库模型中使用 ArrayFields。Django中的ArrayField类似于Java、C、C++等其他编程语言中的数组数据结构,存储相同数据类型的多个值。

计算 Java 数组中的重复元素

发布时间:2023/05/01 浏览次数:202 分类:Java

本篇文章介绍Java计算数组中重复元素的方法。计算 Java 数组中的重复元素。我们可以创建一个程序来计算数组中的重复元素。 该数组可以是未排序的,也可以是已排序的。

MATLAB 数组大小限制

发布时间:2023/04/23 浏览次数:92 分类:MATLAB

本教程将讨论如何使用 MATLAB 中的 memory 命令检查内存限制和数组的最大大小。

扫一扫阅读全部技术教程

社交账号
  • https://www.github.com/onmpw
  • qq:1244347461

最新推荐

教程更新

热门标签

扫码一下
查看教程更方便