类型'(_:字符串,键:任何,值:任何)=>无效的参数不能分配给类型'(子字符串:字符串,... args:任何[])=>字符串'

时间:2018-06-20 12:52:12

标签: typescript

我正在尝试获取打字稿中的查询参数。 我在做什么错了?

代码:

private getQueryParameters(): any {
    let queryParameters = location.search.slice(1),
        params = {};

    let re = /([^=]*)=([^&]*)&*/g;

    queryParameters.replace(re, function (_, key, value) {
        params[key] = value;
    });

    return params;
}

2 个答案:

答案 0 :(得分:1)

您错误地调用了replace,无论如何,为什么要使用replace?您应该只使用exec

while(const match = re.exec(queryParameters)) {
    params[match[1]] = match[2];
}

已编辑。这样好多了

答案 1 :(得分:1)

您的代码不想替换npm -v rxjs 中的任何内容。这就是为什么queryParameters不是最适合使用的方法的原因。

解析String.replace()的最佳方法在其documentation page中进行了说明:

  

现代浏览器提供URLSearchParamsURL.searchParams以便于从查询字符串中解析出参数。

您的代码应检查它们是否由浏览器提供并使用。但是,如果它们不可用,可以通过重复调用Regexp.exec()直到返回location.search来解析查询字符串,如其文档所述:

null