繁体   English   中英

在 typescript 中声明 for in 循环的键类型

[英]declare key type of for in loop in typescript

我有以下代码

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 循环中声明关键字符串?

在 TypeScript 中, for..in只会将被迭代的键键入为字符串- 而不是作为被迭代的 object 的键。 由于key被键入为字符串,而不是newobj ,因此您不能使用newObj[key] ,因为该类型上不存在通用字符串。

改用Object.entries来一次提取键和值,而不是尝试仅通过键 go :

for(const [key, val] of Object.entries(newObj) {
    urlParams.append(key, val);
}
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 as keyof PersonType]); 
}

newObj[key]中添加as keyof PersonType

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM