Typescript 如何声明可以包含字符串或其他数组的数组类型?

Typescript 如何声明可以包含字符串或其他数组的数组类型?,typescript,Typescript,以下是类型为any的变量声明: let errorMessagesBag: any = [] erroMessagesBag必须能够保存数量可变的值,这些值可以是字符串,也可以是字符串的元组。 范例 在这种情况下,如何用正确的类型声明替换“any”,以便它接受包含字符串或字符串元组的数组?为: 或 让errorMessagesBag:Array=[] 这两个语法是等价的。那么: const a: Array<string|string[]> = ["string1", ["tu

以下是类型为any的变量声明:

let errorMessagesBag: any = []
erroMessagesBag必须能够保存数量可变的值,这些值可以是字符串,也可以是字符串的元组。 范例

在这种情况下,如何用正确的类型声明替换“any”,以便它接受包含字符串或字符串元组的数组?

为:

让errorMessagesBag:Array=[]
这两个语法是等价的。

那么:

 const a: Array<string|string[]> = ["string1", ["tuplestring1", "otherString"], "string2"]
const a:Array=[“string1”、“tuplestring1”、“otherString”]、“string2”]

仅扩展正确答案-使用全局自定义的
类型
声明:

type stringTypes = (string | string[]);
let errorMessagesBag: stringTypes[] = []

谢谢那么何时在全局自定义类型上使用接口?它们是等效的吗?
类型可以全局使用。只需创建一些与项目相关的.d.ts文件,并将其放在那里。从那一刻起,您可以在任何地方使用它—将其视为全局类型。同样的(移动到global.d.ts。)我们可以使用
接口
,但它们适用于不同的东西。它们描述的是对象的结构(API)、方法、属性等。因此,
类型
接口
都适用于我们,但它们的功能不同,但定义方式非常相似。。希望能有点帮助;)美好的我想知道,如果没有typescript抱怨,如何引用这样一个变量,例如:类型“string | string[]”上不存在属性“map”。类型“string”上不存在属性“map”。我可以指定使用(myArrayOfStrings).map(…),但不知何故,这感觉有些脏。“正确”的方法是什么?@MaxWaterman我建议将字符串转换为字符串数组:
const strOrArr:string | string[]=”;(strOrArr的类型==“字符串”?[strOrArr]:strOrArr.map(item=>“…”)
。但如果你还有其他问题,最好是提出一个问题。
let errorMessagesBag: Array<string | string[]> = []
 const a: Array<string|string[]> = ["string1", ["tuplestring1", "otherString"], "string2"]
type stringTypes = (string | string[]);
let errorMessagesBag: stringTypes[] = []