为什么Intellisense为常量提供Json?

问题描述 投票:-1回答:1

我宣布一个常数,分配给fetch。现在,intellisense为该常数提供json

是因为vscode知道fetch可以返回json吗?

import {topHeadlinesURL} from 'newsAPI.js';

// Delay execution until page loads
window.addEventListener('load', ()=> {
    kvetchNews();
});

async function kvetchNews(){
    const res = await fetch(topHeadlinesURL);
    const json = await res.json();
}

enter image description here

javascript json visual-studio-code
1个回答
1
投票

一些东西;第一:

为什么Intellisense为常量提供Json?

该变量是const与VSCode建议的方法无关。变量的类型不确定可以在其上调用哪些方法,变量的值。您的变量可以声明为varletconst,它不会改变.json的建议。

第二:

是因为vscode知道fetch可以返回json吗?

这表明对VSCode为您提供的内容存在误解。一个方法是否返回JSON是无关紧要的(fetch没有),VSCode建议方法json,因为它知道变量持有的对象有一个json方法。

在这种情况下,fetch返回一个promise,它解析为一个Response对象,它实现了Body mixin,它提供了json method。你是awaiting这个承诺,所以存储在变量中的值是那个响应对象,你可以在其上调用json

VSCode知道这一点,因为fetch是标准且记录良好的API的一部分:https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API

所有VSCode正在为您提供有关哪些方法可用的建议,从而节省您记住确切方法名称并输入它们的工作量。四字母json方法节省的费用不多,但它对于更长的方法或具有多种方法的对象可能很有用。

© www.soinside.com 2019 - 2024. All rights reserved.