TypeScript的for...of循环中是否支持解构时添加类型注解?
TypeScript for...of循环解构类型注解问题解答
你提到的两类写法完全合法,TypeScript原生支持在for...of循环的解构赋值语句中直接添加类型注解,哪怕遍历的数据源(你提到的some_object、arr)没有完整类型信息甚至是any类型,这类标注语法都可以正常生效。
两类场景的生效逻辑
- 数组解构场景
你给出的示例:
当for(let [id, value]: [string, number] of Object.entries(some_object)) { }some_object没有类型标注、类型推导不完整或者是any类型时,这段注解会直接指定解构得到的id为string类型、value为number类型,后续使用这两个变量时会自动套用该类型约束,不会触发语法报错。 - 对象解构场景
你给出的示例:
同理,哪怕for(let {a, b}: {a: string, b: number} of arr) { }arr是未标注类型的数组、any[]类型,这段注解也会直接指定a为string、b为number,正常提供类型提示和编译期校验。
注意:该注解仅作用于编译期的类型推导,不会做运行时的类型校验,如果实际遍历得到的值和你标注的类型不一致,运行时依然可能出现异常,需要运行时安全可以额外补充类型守卫逻辑。
内容的提问来源于stack exchange,提问作者qz-
相关产品推荐
相关产品推荐

