错误:使用 get 函数时,类型转换表达式应该用括号括起来

新手上路,请多包涵

我是 javascript 的新手,我正在尝试向 youtube API 发出获取请求。在使用 axios 之前,我已经预先配置了一些与请求相关的东西。但是,我认为我的问题更多地与 get 函数的使用有关。

我为请求预定义的配置存储在“youtube”对象下。这是用于创建它的代码

import axios from 'axios';

const KEY = 'AIzaSyDVd1jDhcZdtJb--1_ncBqpL0Gxgfs9ys8';

export default axios.create({

    baseURL: 'https://www.googleapis.com/youtube/v3',
    params: {
        part: 'snippet',
        maxResults: 5,
        key: KEY

    }
});

我的问题与我何时使用这些设置使用 get 函数有关。

下面的代码给了我以下错误:“解析错误:类型转换表达式应该用括号括起来”

 onTermSubmit = (term) => {

        youtube.get('/search',
            params: {
                q:term
            }
        );
    };

但是当我在参数周围添加括号时它工作正常:

 onTermSubmit = (term) => {

        youtube.get('/search', {
            params: {
                q:term
            }
        });
    };

有人可以解释为什么包括括号可以解决这个错误,以及这个错误最初的实际含义是什么?

原文由 Sean Barker 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 535
2 个回答

如果没有花括号(它们不是圆括号),您的代码将是无效的 JavaScript,因为您在对象文字之外有一个属性初始值设定项( params: {q:term} ),其中解析器需要 get 的参数 --- 。我从错误消息中猜测您正在使用 TypeScript,它试图将 params: 之后的部分解释为类型表达式。

添加 {} 修复它,因为您需要将该属性初始值设定项包装在对象文字中,因此您将对象作为第二个参数传递给 get

原文由 T.J. Crowder 发布,翻译遵循 CC BY-SA 4.0 许可协议

因为您没有在 this.setState 方法中包含 {}:

  1. 你更正 this.setState({posts: response.data})

原文由 Khadim H. 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题