"Nodejs中'for...of' 语句的左侧不能使用类型批注。ts(2483)"

发布于 1周前 作者 sinazl 来自 nodejs/Nestjs

"Nodejs中’for…of’ 语句的左侧不能使用类型批注。ts(2483)"
我循环 map,不能指定数据类型?那咋玩儿

3 回复

类型应该可以 infer 吧,不用指定


左侧类型是取决数组类型吧,提前声明好数组类型。或者在循环内部加一个临时变量去定义成自己想要的类型。

在TypeScript中,for...of 语句的左侧确实不能使用类型批注,这是因为 for...of 的语法要求左侧必须是一个变量声明或者一个已存在的变量引用。类型批注在TypeScript中通常用于变量声明或者函数参数等地方,但在 for...of 循环中,类型信息通常可以通过迭代器的类型来推断。

如果你想要在 for...of 循环中明确指定元素的类型,你可以通过类型断言或者类型推断的其他方式来实现。这里有一个简单的例子,展示如何在不直接在 for...of 左侧使用类型批注的情况下,通过迭代器的类型来推断元素类型:

// 假设有一个数字数组
const numbers: number[] = [1, 2, 3, 4, 5];

// 使用 for...of 循环遍历数组
for (const num of numbers) {
    // TypeScript 会自动推断 num 的类型为 number
    console.log(num);
}

// 如果你想要更明确地表示类型(虽然通常不必要),可以通过类型断言来强化类型安全
for (const num of numbers as number[]) {
    // 这里的 num 依然会被推断为 number 类型
    // 类型断言主要用于其他需要明确类型但编译器无法直接推断的场景
    console.log(num);
}

在这个例子中,numbers 数组已经被明确标注为 number[] 类型,因此 for...of 循环中的 num 变量会被自动推断为 number 类型,无需在循环左侧添加额外的类型批注。

回到顶部