解决:元素隐式具有 “any“ 类型,因为类型为 “string“ 的表达式不能用于索引类型 “{}“。 在类型 “{}“ 上找不到具有类型为 “string“ 的参数的索引签名。

今天在用ts去写代码的时候,遇到了一个小问题,代码如下:

public static objToParm(obj:object): string {
        let parm = '?';
        for (const key in obj) {
            if (Object.prototype.hasOwnProperty.call(obj, key)) {
                const value = obj[key];
                parm += key + '=' + value + '&';
            }
        }
        return parm.substring(0, parm.length - 1);
    }

 截图:

报错原因: 这个错误的原因是你在尝试使用将一个字符串作为对象的索引,但是 TypeScript 编译器无法确定该索引是否有效,因为对象类型 “{}” 并没有定义一个接受字符串作为索引的索引签名。

解决办法:使用 { [key: string]: any }

代码:

public static objToParm(obj: { [key: string]: any }): string {
        let parm = '?';
        for (const key in obj) {
            if (Object.prototype.hasOwnProperty.call(obj, key)) {
                const value = obj[key];
                parm += key + '=' + value + '&';
            }
        }
        return parm.substring(0, parm.length - 1);
    }

这样就ok了

猜你喜欢

转载自blog.csdn.net/xiaomaomixj/article/details/132212397
今日推荐