如何确定打字稿、数字数组或字符串数组中的变量类型?
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>();
【讨论】:
如果指定数组如果你只需要获取其中元素的类型,因为它们要么是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)[] = [];
【讨论】:
以上是关于如何确定打字稿、数字数组或字符串数组中的变量类型?的主要内容,如果未能解决你的问题,请参考以下文章
在javascript中将数字转换为数组| angular7的打字稿[重复]