【问题标题】:For loop not executing (TypeScript) [closed]For循环未执行(TypeScript)[关闭]
【发布时间】:2020-12-09 12:31:06
【问题描述】:

我对打字稿很陌生,所以我可能会犯一个小学生错误。 反正我有这个代码

const gCharData: any = {};
function buildChar()
{
    const key = "Char1";
    let currentChar = gCharData[key];
    if (!currentChar) {
        currentChar = {
            name: "Jack",
            parts: new Set(),
        };
        gCharData[key] = currentChar;
    }
    currentChar.parts.add("Head");
}
function foo(chars: { [x: string]: any; })
{
     for (var charName in chars) {
        const details = chars[charName];
    
        for (var name of details.parts) {
            /*NOT EXCUTING*/
        }
    }
}
function main()
{
    buildChar()
    foo(gCharData)
}
main();

第二个 for 循环没有执行。 知道为什么吗?

提前致谢,

【问题讨论】:

  • 你应该避免在打字稿中使用any,因为这样它就没有比普通Javascript更有优势了
  • details.parts 为空 Set: {}

标签: javascript typescript for-loop


【解决方案1】:

似乎问题只是与创建的Set 对象有关,如果您想迭代Set 对象的部分,一种选择是这样做:

function foo(chars: { [x: string]: any; })
{
     for (var charName in chars) {
        const details = chars[charName];
    
        for (var name of Array.from(details.parts)) {
            console.log("value: " + name);
    }
}

这里是实时代码:https://jsfiddle.net/0mkcpqnu/1/

【讨论】:

    最近更新 更多