如何确定打字稿、数字数组或字符串数​​组中的变量类型?

Posted

技术标签:

【中文标题】如何确定打字稿、数字数组或字符串数​​组中的变量类型?【英文标题】:How to determine type of variable in typescript, array of numbers or array of strings? 【发布时间】:2020-04-09 16:16:46 【问题描述】:

我有一个类似的变量

const data = [];

在我的应用程序的某些地方,数据看起来像字符串数组或数字数组

// data [1, 2, 3]
// data ["1", "2", "3"]

如何获取这个变量的类型——字符串数组或数字数组?

【问题讨论】:

数组中是否可以同时包含数字和字符串? 您在不同的点上似乎有 不同的 数据。只选择一个 - 任何对您的用例有意义的东西,然后给变量 that 类型,然后确保您只有一种类型进入它。例如,如果您将其声明为 number[],则在添加到数组之前将所有输入转换为数字。 @RomiHalasz 是的,["hello", 42, true] 有效并没有真正的问题。 @RomiHalasz 没有数字或只有字符串。 @0xD34F 数字数组或字符串数​​组 - string[] | number[] 【参考方案1】:

是的,您可以使用单一类型键入变量

// type data as an array of strings
const data: string[] = [];

// type data as an array of numbers
const data: number[] = [];

// type data as an array of objects
const data: object[] = [];

如果您想在数组中使用多种类型,可以将其键入为any。但这可能不是一个好习惯。

const data: any[] = [];

有关 typescript 的更多信息,请看这里: Basic type documentation

要定义多种类型的数组,请看这里:https://***.com/a/29382420/1934484

【讨论】:

这就是我需要的。但是如何仅指定行或仅一起指定数字? @0xD34F 如果你想使用多种类型请看这里***.com/a/29382420/1934484【参考方案2】:

@Tomas Vancoillie 的想法是正确的。

您可以使用 : 运算符声明它们。

也可以用Array()来推断类型,例如:

let myStringArray = Array<string>();

【讨论】:

如果指定数组 它会是 (1) 只有字符串和只有数字吗?还是(2)字符串和数字? @0xD34F 字符串和数字。 数组是T型的,也就是说,它将是字符串和数字。 @Paul 如何设置类型 T ? @0xD34F T 表示通用,它接受所有内容。如果你想使用任何东西,使用类型 【参考方案3】:

如果你只需要获取其中元素的类型,因为它们要么是string,要么是number,你可以只获取第一个元素的类型,因为所有其他元素都具有相同的类型:

typeof data[0] // string or number

【讨论】:

【参考方案4】:

你可以像这样定义你的数组,打字稿编译器只允许字符串

const array: Array<string> = [];

或者如果你想让字符串和数字这样定义

const array: Array<string | number> = [];

你也可以这样定义

const array: string[] = [];
const array: (string | number)[] = [];

【讨论】:

以上是关于如何确定打字稿、数字数组或字符串数​​组中的变量类型?的主要内容,如果未能解决你的问题,请参考以下文章

如何在打字稿元组中使用扩展运算符?

在打字稿中查找3个数组中的共同元素[重复]

在javascript中将数字转换为数组| angular7的打字稿[重复]

如何将这些对象转换为打字稿中的数组

类型为 String 时如何在 DB 中查找项目 |使用打字稿联合类型的字符串 []

我如何遍历表单数组并将其值设置为打字稿中的另一个数组?