如何在打字稿中将任何数组转换为包含其他数据类型的字符串数组?

Posted

技术标签:

【中文标题】如何在打字稿中将任何数组转换为包含其他数据类型的字符串数组?【英文标题】:How do I convert an any array to a string array containing other datatypes inside in typescript? 【发布时间】:2022-01-20 16:05:33 【问题描述】:

我正在做一个打字稿教程练习,希望我将 any[] 数组更改为 string[]。

// declaring an array of any datatype
const  manufacturers: any[] = [ id: 'Samsung', checked: false ,
         id: 'Motorola', checked: false ,
         id: 'Apple', checked: false ,
         id: 'Sony', checked: false 
    ];

console.log('Available Products are: ');

 // logic to populate the above declared array's id value
for (const item of manufacturers) 

     console.log(item.id);
    if(item.id === "Apple")
    
        console.log("check value is " + item.checked)
    
    

上面的可以,但是如果我把any[]改成string[],就不行了。如果我这样做了

"const manufacturers: [string,boolean][]=" 然后它识别布尔值而不是字符串。我试图理解为什么它不将 id 视为字符串变量并使其匹配。如何在不使用'any[]'的情况下完成此操作

【问题讨论】:

你不必annotate变量,你知道的。你可以只写const manufacturers = [ id: 'Samsu...,编译器会将类型推断 id: string; checked: boolean; [](你可以在支持IntelliSense的IDE(如VSCode)中将鼠标悬停在manufacturers上看到)。如果必须对变量进行注解,可以先让编译器推断它,然后像this一样复制推断的类型。 请注意[string, boolean][] 看起来像[["Samsung", false], ["Motorola", false]] 而不是[id: "Samsung", checked: false, id: "Motorola, checked: false]。如果这对您有意义,我可以写一个答案;如果没有,请告诉我缺少什么。 @jcalz 这很有趣。如果教程告诉我它在寻找什么,那就太好了。只是说“修改厂家数组的数据类型为字符串,重新执行代码。” 【参考方案1】:

manufacturers 的类型是 id: string, checked: boolean []

说明:

manufacturers 对象是一个包含对象的数组。每个对象都有一个id 和一个checked 属性,它们的类型分别是字符串和布尔值。

所以正如你所说,从any[] 更改为string[] 是行不通的,因为manufacturers 类型不是string[],而是 id: string, checked: boolean []

const manufacturers:  id: string, checked: boolean [] = [ id: 'Samsung', checked: false ,
 id: 'Motorola', checked: false ,
 id: 'Apple', checked: false ,
 id: 'Sony', checked: false 
];

console.log('Available Products are: ');

for (const item of manufacturers) 

  console.log(item.id);
  if (item.id === "Apple") 
    console.log("check value is " + item.checked)
  

正如@Calz 指出的那样,您不需要显式输入变量的类型,因为初始化是在声明时进行的。

这是一个解释这个的小例子:

let a;
a = 5
console.log(typeof a) // number
a = "string"
console.log(typeof a) // string

let b = 5
b = "some string"; // error as TypeScript blames that type string is not assignable to type number

【讨论】:

以上是关于如何在打字稿中将任何数组转换为包含其他数据类型的字符串数组?的主要内容,如果未能解决你的问题,请参考以下文章

在打字稿中将 JSON 转换为字符串数组

将firebase json转换为打字稿数组

如何在打字稿中将类型本地添加到无类型的 npm 模块?

如何在打字稿中将存储在 Observable<any> 中的值转换为字符串?

将打字稿枚举转换为枚举数组

如何将firebase REST API响应转换为打字稿中的数组?