有没有办法提示VSCode / Monaco的intellisense变量类型。
我有一些像这样的代码
var loc = window.location;
var gl = context1.getContext("webgl");
var ctx = context2.getContext("2d");
我看到VSCode知道loc
是URL
但它不知道gl
是什么
它也不知道ctx
是什么
这是有道理的,让函数根据其输入返回不同的类型是一种不太常见的情况。
但它确实有WebGLRenderingContext
它知道CanvasRenderingContext2D
有没有办法让我告诉vscode / monaco gl
是WebGLRenderingContext
的一个实例,而ctx
是CanvasRenderingContext2D
的实例而无需切换打字稿?也许通过添加某种评论?
我需要在monaco中工作的解决方案(至少在我的测试中显示所有相同的完成),因为这是针对WebGL教程站点,实际上不是VSCode但是我希望解决方案是一样的。
答案 0 :(得分:9)
看到JSDoc style type annotations在VSCode中工作,虽然它们似乎在摩纳哥不起作用。
var loc = window.location;
/** @type {WebGLRenderingContext} */
var gl = context1.getContext("webgl");
/** @type {CanvasRenderingContext2D} */
var ctx = context2.getContext("2d");
答案 1 :(得分:2)
正如Micah在对已接受答案的评论中指出的那样,外部模块仍然存在问题。如果库定义了一个可以引用类型的全局对象,那么只需执行模块的命令就可以使jsdoc类型注释生效。否则,您可以通过导入所有内容并将其映射到您自己的名称来模仿它。
import * as Foo from 'foo'
/** @type {Foo.Foo} */
var foo;
https://github.com/Microsoft/TypeScript/issues/8237#issuecomment-213047062
答案 2 :(得分:-1)