【问题标题】:VS code how to show full typescript definition on mouse hoverVS代码如何在鼠标悬停时显示完整的打字稿定义
【发布时间】:2020-06-22 06:52:56
【问题描述】:

我正在将 React 项目从 jsx 转换为 tsx 文件。

我需要一个常量类型的完整预览:

const canvasProps = {
  setPorts,
  setBoxes,
  setLines,
  selected,
  setSelected,
  actionState,
  setActionState,
  ... // and more
};

悬停在canvasProps 上时,我会看到预览:

const canvasProps: {
    setPorts: React.Dispatch<React.SetStateAction<{
        shape: string;
        id: string;
        name: string;
        port: portType;
        ref: any;
    }[]>>;
    setBoxes: React.Dispatch<React.SetStateAction<BoxType[]>>;
    ... 13 more ...;
    toggleFlowVisibility: (flow: any) => void;
}

我需要得到这个常量的完整类型定义,这意味着查看额外的 13 种类型。

(为什么需要这个?我需要声明React.Context的属性,这取决于尚未声明的函数(在函数组件内))

所以我是否可以不费吹灰之力地获得完整的类型定义?

【问题讨论】:

  • 我不确定我是否完全理解。 canvasProps 来自哪里?它是您声明的对象,还是由第 3 方声明的?
  • 它是在我的“主”反应组件中声明的对象,然后该对象用作我的上下文值对象(所有子组件都使用)。问题是,我需要在主组件之外使用React.createContext 定义一个上下文,以便所有其他子组件都能够导入它,所以我需要在这个对象中预定义每个 var 的类型。
  • 如果我理解正确的话,将上下文结构作为接口怎么样?因此,首先,当您更改上下文时,您将是类型安全的,其次,在子项中使用该类型。
  • 同意。我试图深入研究 vscode 代码库,以找到确切计算此工具提示内容的位置,但似乎它不在 vscode 本身(但可能只是我)。这是我走了多远:github.com/moshfeu/vscode/blob/…。无论如何,它至少闻起来像是一个功能请求,或者是 Github 上的一个问题。

标签: visual-studio-code


【解决方案1】:

设置"noErrorTruncation": true,如上一个答案中所建议的那样,按要求解决此问题。

一个真正有效的快速解决方案是……一个更具攻击性的解决方案;p

从打开开始

<Microsoft VS Code install folder>/resources/app/extensions/node_modules/typescript/lib/tsserver.js

并且,在第 13471 行(到目前为止)附近,更改:

ts.defaultMaximumTruncationLength = 160

到更高的东西,比如

ts.defaultMaximumTruncationLength = 800

这会让你得到你所期待的。悬停时一个漂亮的 800 字符长的最大类型定义。当然,您可以随意自定义。

这可能无法维护,因为您需要在每次 Visual Studio Code 更新后再次执行此操作,但它工作得很好,并且您最终会在悬停时获得完整的类型。

请注意,您需要重新启动 tsServer。在 Visual Studio Code 中这样做:

  • ctrl + shift + P
  • 输入restart ts server
  • 回车

等待几秒钟,相当快。

【讨论】:

    【解决方案2】:

    "noErrorTruncation": true 添加到tsconfig.json 具有从VSCode 中的类型预览扩展... n more ... 的副作用。

    【讨论】:

      【解决方案3】:

      我遇到了同样的问题,发现了一个非常有用的扩展:https://marketplace.visualstudio.com/items?itemName=kimuson.ts-type-expand。这会计算并在资源管理器侧边栏上显示完整的类型定义。

      我与此扩展无关。

      【讨论】:

        猜你喜欢
        • 2018-04-01
        • 2017-03-06
        • 1970-01-01
        • 2012-09-30
        • 2013-12-10
        • 2015-09-25
        • 1970-01-01
        • 2016-04-26
        • 1970-01-01
        相关资源
        最近更新 更多