【问题标题】:Flow can't assign property: assignment of computed property/element流无法分配属性:计算属性/元素的分配
【发布时间】:2017-11-15 02:33:22
【问题描述】:

我正在尝试像这样在对象中添加属性:

request(options:HttpRequestData): Promise<any> {
    options.headers = options.headers || {};

    options.headers['Accept'] = 'application/json';
    options.headers['Content-Type'] = 'application/json';  // Error

    return this._request(options);
}

但它有错误:

options.headers['Content-Type'] = 'application/json';
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 
assignment of computed property/element. Computed property/element cannot be assigned on possibly undefined value

HttpRequestData 是一个对象类型:

type HttpRequestData = {
    url:string,
    method:string,
    headers?:Object,
    body?:string,
};

仅将一个值分配给 options.header(在这种情况下,'Accept')有效,但当我尝试两个或更多时它会失败。

Flow 中单次赋值和多次赋值有什么区别,如何将这些属性赋值给 options.headers 对象?

任何建议都会非常感激。

【问题讨论】:

  • 看来,没有对象类型,在流中。我的意思是对象类型的语法不正确。
  • @TarasYaremkiv 谢谢,所以我刚刚更新了 headers 属性,如下所示: headers?:{ [string]: string } 但仍然出现相同的错误。

标签: javascript flowtype


【解决方案1】:

我这样解决了这个问题:

request(options:HttpRequestData): Promise<any> {
    options.headers = options.headers || {};

    const modifiedHeaders = options.headers;
    modifiedHeaders['Accept'] = 'application/json';
    modifiedHeaders['Content-Type'] = 'application/json';

    options.headers = modifiedHeaders;

    return this._request(options);
}

现在没有更多错误消息了。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-11-17
    • 2017-11-04
    • 2016-11-02
    • 2018-06-24
    • 1970-01-01
    • 2018-01-08
    相关资源
    最近更新 更多