为VSCode / Monaco Intellisence添加JavaScript类型提示

时间:2016-09-26 03:46:26

标签: javascript intellisense visual-studio-code monaco-editor

有没有办法提示VSCode / Monaco的intellisense变量类型。

我有一些像这样的代码

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

我看到VSCode知道locURL

vscode knows loc

但它不知道gl是什么

vscode does not know gl

它也不知道ctx是什么

vscode does not know ctx

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

但它确实有WebGLRenderingContext

的类型数据

vscode knows webglrenderingcontext

它知道CanvasRenderingContext2D

vscode knows canvasrenderingcontext2d

有没有办法让我告诉vscode / monaco glWebGLRenderingContext的一个实例,而ctxCanvasRenderingContext2D的实例而无需切换打字稿?也许通过添加某种评论?

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

3 个答案:

答案 0 :(得分:9)

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

看到JSDoc style type annotations在VSCode中工作,虽然它们似乎在摩纳哥不起作用。

var loc = window.location;

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

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

enter image description here

enter image description here

答案 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)

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

var gl : WebGLRenderingContext;

enter image description here