typescript 循环对象重置值
环境是vue3 + ts
function resetForm () {
// const INITIALFORM = {
// url: '',
// device: 'mobile',
// dimension: ['time', 'page'],
// }
for (const key in INITIALFORM) {
type KeyType = keyof typeof INITIALFORM
const initialValue = INITIALFORM[key as KeyType]
// ^ const initialValue: string | string[]
form[key as KeyType] = initialValue
/**
* type KeyType = "url" | "device" | "dimension"
不能将类型“string | string[]”分配给类型“string & string[]”。
不能将类型“string”分配给类型“string & string[]”。
不能将类型“string”分配给类型“string[]”
*/
}
}
问题1.form[key as KeyType] = initialValue
这里赋值会报错,知道initialValue as any
可以处理,但,不应该这样处理吧?想知道正确的处理方式。
问题2.const initialValue = INITIALFORM[key as KeyType]
、form[key as KeyType] = initialValue
两处都需要key as KeyType
,可以提升一次性处理么?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
在stackoverflow看到了详细的解答,总结一下:
TS3.5
做了大版本更新,对象元素值是联合类型时,form[key] = initialValue
是不安全 的。现有解决方案,抽取函数,使用泛型。
试试这个