提问人:Jeroen 提问时间:11/12/2023 最后编辑:Jeroen 更新时间:11/19/2023 访问量:76
如何使用 JSDoc 将图表.js键入信息到我的普通 javascript 文件中?
How to get the Chart.js type information into my plain javascript file using JSDoc?
问:
我似乎无法让 VSCode 中基于 JSDoc 的智能感知适用于 Chart.js 库。
可重现的场景
这些步骤最少,下面很详细,但您也可以克隆我使用此问题中的步骤创建的存储库。
我有一个相当旧的应用程序,这是我所拥有的最低限度的可重复变体:
- 跑
npm i chart.js chartjs-adapter-moment moment
- 创建一个如下所示的:
index.html
<html>
<script src="node_modules/moment/moment.js"></script>
<script src="node_modules/chart.js/dist/chart.umd.js"></script>
<script src="node_modules/chartjs-adapter-moment/dist/chartjs-adapter-moment.js"></script>
<script src="app.js"></script>
<div style="height: 200px; width: 300px;"><canvas id="my-chart"></canvas></div>
</html>
- 创建一个如下文件:
app.js
// @ts-check
/**
* @typedef moment
* @property {import('moment')} moment
*/
/**
* @global {import('chart.js')} Chart
*/
document.addEventListener("DOMContentLoaded", () => {
const ctx = document.getElementById("my-chart");
const chartRef = new Chart(ctx, {
type: "line",
options: {
scales: {
x: { type: "time" },
y: { min: 0, max: 10 },
},
},
data: {
datasets: [
{
label: 'Stuff',
data: [
{ x: moment("2023-01-01"), y: 2 },
{ x: moment("2023-02-01"), y: 8 },
{ x: moment("2023-03-01"), y: 3 },
{ x: moment("2023-04-01"), y: 6 },
],
},
],
},
});
});
问题
这些类型似乎在 VSCode 中运行良好。但是打字根本不起作用。以下是它目前在 VSCode 中的作用:moment
Chart
我尝试了一堆不同的东西而不是声明,似乎没有任何效果。@global
底线/问题
当我不使用任何或类似类型时,如何在 VSCode 中正确获取 Chart.js 和相关类型的类型补全?Chart
import
require
我尝试过的事情
出现了一个有用的答案,但我可以将其中的建议添加到“我尝试过的事情”中,但它们并没有解决我的具体问题,如下所述。
第一个建议是使用,但这给我留下了同样的错误:/** @typedef {import("chart.js")} */
找不到名称“Chart”。TS(2304)
正如我在某个时候对答案的评论中所写的那样,我想我也看到了:
“Chart”仅指一种类型,但在这里用作值。TS(2693)
但是我必须对建议略有不同,现在似乎再也无法得到那个特定的错误了。
对问题进行了编辑,建议尝试一下,这确实给了我:/** @typedef {import("chart.js").Chart} Chart */
“Chart”仅指一种类型,但在这里用作值。TS(2693)
从相应的屏幕截图中可以看出:
答:
尝试将 .@global
/** @typedef {import("chart.js")} */
另请参阅 https://www.typescriptlang.org/docs/handbook/jsdoc-supported-types.html 以获取受支持的 JSDoc 事物的列表。我看不到那里。VS Code 的内置 JS 支持建立在 TypeScript 的 tsserver 之上。@global
如果需要特定类型,请导入类型:。/** @typedef {import("chart.js").Chart} Chart */
评论
Chart
评论