21

有没有办法提示 VSCode/Monaco 的智能感知变量类型。

我有一些这样的代码

var loc = window.location;
var gl = context1.getContext("webgl");
var ctx = context2.getContext("2d");

我看到 VSCode 知道这loc是一个URL

vscode 知道 loc

但它不知道是gl什么

vscode不知道gl

它也不知道什么ctx

vscode不知道ctx

这是有道理的,让函数根据其输入返回不同类型是一种不寻常的情况。

但它确实有类型数据WebGLRenderingContext

vscode 知道 webglrenderingcontext

它知道CanvasRenderingContext2D

vscode知道canvasrenderingcontext2d

有没有办法让我告诉 vscode/monaco 这gl是一个实例,WebGLRenderingContextctx是一个实例,CanvasRenderingContext2D而不必切换到打字稿?也许通过添加某种评论?

我需要在摩纳哥工作的解决方案至少在我的测试中显示所有相同的完成),因为这是针对 WebGL 教程站点,实际上不是针对 VSCode,但我希望解决方案是相同的。

4

3 回答 3

36

更新:从 Monaco 的 0.9.0 开始,这些类型注释现在可以使用


看到JSDoc 样式类型注释在 VSCode 中工作,尽管它们似乎在摩纳哥不起作用。

var loc = window.location;

/** @type {WebGLRenderingContext} */
var gl = context1.getContext("webgl");    

/** @type {CanvasRenderingContext2D} */
var ctx = context2.getContext("2d"); 

在此处输入图像描述

在此处输入图像描述

于 2016-09-26T03:58:05.613 回答
5

正如 Micah 在对已接受答案的评论中指出的那样,外部模块仍然存在问题。如果库定义了一个全局对象,您可以从中引用类型,那么只需对模块执行一个 require 即可启用 jsdoc 类型注释。否则,您可以通过导入所有内容并将其映射到您自己的名称来模仿这一点。

import * as Foo from 'foo'

/** @type {Foo.Foo} */
var foo;

https://github.com/Microsoft/TypeScript/issues/8237#issuecomment-213047062

于 2018-02-12T17:37:32.497 回答
0

如果你愿意使用 Typescript,你可以这样做:

var gl : WebGLRenderingContext;

在此处输入图像描述

于 2017-01-11T04:25:18.763 回答