【问题标题】:Why Does Intellisense Offer Json for a Constant?为什么 Intellisense 为常量提供 Json?
【发布时间】:2019-03-24 00:51:35
【问题描述】:

我声明了一个常量,分配给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();
}

【问题讨论】:

  • 这个问题真的没有意义。对变量调用.json 的能力并不取决于您如何声明该变量varletconst。它由存储在其中的值决定。
  • 图片没有增加任何清晰度。不清楚为什么您认为“常数”在这里是相关的;正如已经指出的那样,fetch 返回具有.json 方法的东西,VSCode 知道这一点,因为fetch 是一个内置的标准函数;它返回一个promise,你是awaiting,所以解析的值将是一个Response 对象,它有一个.json 方法。
  • 因为这里没有有用的答案。 Intellisense 提供.json,因为它知道.json 是您可以对存储在res 中的值调用的东西,它的工作是建议这些东西以节省您的时间和击键次数。
  • 我想这个问题被搁置的一个原因是因为可以认为答案没有用。你相信它是,但遗憾的是那些投票搁置问题的人没有。

标签: javascript json visual-studio-code


【解决方案1】:

一些事情;第一:

为什么 Intellisense 会为常量提供 Json?

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

第二:

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

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

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

VSCode 知道这一点,因为 fetch 是标准且文档齐全的 API 的一部分:https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API

VSCode 所做的只是为您提供哪些方法可供您使用的建议,从而节省您记住确切的方法名称并输入它们的工作。四个字母的 json 方法节省不了多少,但它对于更长的方法或有很多方法的对象很有用。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-07-09
    • 2014-01-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-04-29
    • 2016-04-24
    • 1970-01-01
    相关资源
    最近更新 更多