如何使 VS Code 在鼠标悬停时显示完整的 TypeScript 类型定义?

Eli*_*ski 14 visual-studio-code

我正在将 React 项目从使用 JSX 转换为使用 TSX 文件。

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

const canvasProps = {
  setPorts,
  setBoxes,
  setLines,
  selected,
  setSelected,
  actionState,
  setActionState,
  ... // and more
};
Run Code Online (Sandbox Code Playgroud)

将鼠标悬停在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;
}
Run Code Online (Sandbox Code Playgroud)

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

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

那么如何才能不费力地获得完整的类型定义呢?

小智 34

"noErrorTruncation": true正如上一个答案中所建议的那样,设置不适用于所提出的这个问题。

\n

真正有效的快速修复将是\xe2\x80\xa6,这是一个更具攻击性的解决方案;p

\n

从打开开始

\n
<Microsoft VS Code install folder>/resources/app/extensions/node_modules/typescript/lib/tsserver.js\n
Run Code Online (Sandbox Code Playgroud)\n

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

\n
ts.defaultMaximumTruncationLength = 160\n
Run Code Online (Sandbox Code Playgroud)\n

到更高的东西,比如

\n
ts.defaultMaximumTruncationLength = 800\n
Run Code Online (Sandbox Code Playgroud)\n

这将为您带来您正在等待的东西。悬停时的最大长度为 800 个字符的漂亮类型定义。当然,您可以根据需要进行自定义。

\n

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

\n

请注意,您需要重新启动 tsServer。要在 Visual Studio Code 中执行此操作:

\n
    \n
  • ctrl+ shift+P
  • \n
  • 类型restart ts server
  • \n
  • enter
  • \n
\n

等几秒钟,速度相当快。

\n