我有下面的代码
const urlParams = new URLSearchParams(window.location.search);
interface PersonType {
fname: string
lname: string
}
const person: PersonType = {fname:"John", lname:"Doe"};
const newObj = {
newobj: "new value"
}
for(const key in person) {
urlParams.append(key, newObj[key]); //error
}
https://codesandbox.io/s/vanilla-ts?utm_source=dotnew&file=/src/index.ts:0-500
我应该如何在for in循环中声明的键字符串?
3条答案
按热度按时间2vuwiymt1#
在TypeScript中,
for..in
只会将被迭代的键输入为 string,而不是被迭代的对象的键。由于key
是作为字符串输入的,而不是newobj
,因此不能使用newObj[key]
,因为泛型字符串在类型上不存在。使用
Object.entries
,一次提取键和值,而不是尝试单独处理键:mmvthczy2#
在
newObj[key]
中添加as keyof PersonType
dw1jzc5e3#
我通常只是用一个显式的类型重新声明键。特别是,如果我经常在循环中使用键。