为什么Intellisense为常数提供Json?

时间:2019-03-24 00:51:35

标签: javascript json visual-studio-code

我声明了一个常量,该常量已分配给fetch。现在,智能感知为该常数提供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

1 个答案:

答案 0 :(得分:1)

几件事;首先:

  

为什么Intellisense为常数提供Json?

变量为const与VSCode建议的方法无关。变量的类型不能确定可以在其上调用什么方法,变量的 value 可以。您的变量可以声明为varletconst,并且不会更改.json的建议。

第二:

  

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

这表明对VSCode为您提供的功能有误解。方法是否返回JSON无关紧要(fetch无关),VSCode建议使用方法json,因为它知道变量所保存的对象具有json方法。

在这种情况下,fetch返回一个promise,该promise解析为一个实现了Response并提供Body mixinjson method对象。您正在await兑现承诺,因此存储在变量中的值就是该响应对象,您可以在其上调用json

VSCode知道这一点,因为fetch是标准且有据可查的API:https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API

的一部分

VSCode所做的全部工作都是为您提供建议哪些方法可用的建议,从而省去了记住确切方法名称并键入它们的工作量。四字母json方法不会节省多少,但是对于较长的方法或具有许多方法的对象来说可能很有用。