在Typescript中,类型定义中的方括号表示数组类型。

4

在这个问答中,我看到了一个联合类型定义被包含在方括号中(编辑:现在问题已经被修复)。到目前为止,我只看到过没有方括号的联合类型。例如:

  • string | number

和这个:

  • [string | number]

两者之间有什么区别呢?

type UnionA = number | string;
type UnionB = [number | string];

我了解在TS中方括号的以下几种含义:
1个回答

6

我错过了 TypeScript 中的一种基本类型:元组

因此,UnionAUnionB 的语义是不同的:

let x: UnionA = 0      // works
let x: UnionA = ""     // works
let x: UnionB = 0      // doesn't work
let x: UnionB = ""     // doesn't work
let x: UnionB = [0]    // works
let x: UnionB = [""]   // works

基本上,UnionB是一个长度为1的元组,其第一个元素是number | string的联合体。

回顾一下,链接的问题最可能

  • 不是想使用[]来获取纯联合类型,或者
  • 打算使用,而不是|来获得具有多个字段的有意义的元组。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接