在处理浏览器url参数的时候,发现只用类型推论,解决不了下面的问题
相关代码
const search = location.href.split('?')[1] // 例如 'a=123&b=456'
const searchArr = search.split('&') // 例如 ['a=123', 'b=456']
const query = searchArr.reduce((accumulator, currentValue) => {
const [key, value] = currentValue.split('=')
accumulator[key] = value
return accumulator
}, {}) // 例如{ a: 123, b: 456 }
console.log(query.a) // ts报错类型“{}”上不存在属性“a”,这里应该怎么处理?
可以用类型断言array.reduce((res, v) => ..., {} as Type);至于Type是要严格的某个类型或者是any又或者简单的Record<string, string>都可以。