如何将 any 数组转换为包含打字稿中其他数据类型的字符串数组?
How do I convert an any array to a string array containing other datatypes inside in typescript?
我正在做一个 typescript 教程练习,希望我将 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[]'
的情况下完成此操作
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
我正在做一个 typescript 教程练习,希望我将 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[]'
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