我宣布一个常数,分配给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();
}
一些东西;第一:
为什么Intellisense为常量提供Json?
该变量是const
与VSCode建议的方法无关。变量的类型不确定可以在其上调用哪些方法,变量的值。您的变量可以声明为var
,let
或const
,它不会改变.json
的建议。
第二:
是因为vscode知道fetch可以返回json吗?
这表明对VSCode为您提供的内容存在误解。一个方法是否返回JSON是无关紧要的(fetch
没有),VSCode建议方法json
,因为它知道变量持有的对象有一个json
方法。
在这种情况下,fetch
返回一个promise,它解析为一个Response
对象,它实现了Body
mixin,它提供了json
method。你是await
ing这个承诺,所以存储在变量中的值是那个响应对象,你可以在其上调用json
。
VSCode知道这一点,因为fetch
是标准且记录良好的API的一部分:https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API
所有VSCode正在为您提供有关哪些方法可用的建议,从而节省您记住确切方法名称并输入它们的工作量。四字母json
方法节省的费用不多,但它对于更长的方法或具有多种方法的对象可能很有用。