Error: The type cast expression is expected to be wrapped with parenthesis when using get function

Error: The type cast expression is expected to be wrapped with parenthesis when using get function

我是 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 函数有关。

下面的代码给了我以下错误:"Parsing error: The type cast expression is expected to be wrapped with parenthesis"

onTermSubmit = (term) => {

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

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

onTermSubmit = (term) => {

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

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

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

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

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

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

最初我用的是这个:

this.setState( state: {query: query});

但是当我收到错误时,在添加如下所示的括号后,我添加了。它对我有用。

this.setState( {state: {query: query}});