【发布时间】: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 上的一个问题。