继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续
感谢您的支持,我会继续努力的
赞赏金额会直接到老师账户
将二维码发送给自己后长按识别
微信支付
支付宝支付

优化Visual Studio Code的自动补全

BIG阳
关注TA
已关注
手记 428
粉丝 70
获赞 457

Visual Studio Code (简称VS Code)是个很棒的代码编辑器,内置多种语言的自动补全功能,写JavaScript也不例外,VS Code提供的自动补全还是很赞的。

不过自动补全功能在有些情况下会失效,比如 document.getElementById()document.querySelector() 返回的对象,是没有自动补全的:

webp

自动补全失效

就像图中展示的,canvas节点应该有个 getContext() 方法。但是在编码阶段,VS Code 无法确定 document.querySelector('#canvas') 返回的是什么类型的节点,自动补全就无能为力了。

面对这种情况,我们可以在代码注释中添加这一行:

/** @type {HTMLCanvasElement} */var canvas = document.querySelector('#canvas');

通过注释中的 @type 指令,我们就可以告诉VSCode,canvas 变量就是个 HTMLCanvasElement 类型的 DOM 节点。这样自动补全就又“复活”了。

webp

用@type指令恢复自动补全

注释中 @type,实际上是一个 JSDoc 指令,它指示下一行的变量属于什么类型,方便编辑器或IDE做语法检查或自动补全。

另外,在使用JS库函数时,VS Code的自动补全很难生效。这时候我们可以给VS Code “一点提示”,具体怎么做呢?

有个项目叫 DefinitelyTypedhttp://definitelytyped.org/)。这个项目的任务,就是提供和更新各种常用JS库的接口定义,有了接口定义,VS Code 或 IDE 就可以很方便地做自动补全了。

如何获得一个库的接口定义?官方的用法就是通过 npm 来获取,比如获取 THREE.js的 接口定义:

npm install --save-dev @types/three

其中 @types/ 后面跟随就是JS库的名称。你会发现 node_modules 下多出了一个 @types/three 目录,里面的 index.d.ts 就是 DefinitelyTyped 为我们写好的接口文件。

webp

image.png

使用 三斜线指令 在代码中引用接口文件:

/// <reference path="./node_modules/@types/three/index.d.ts" />

这行就是触发自动提示的关键,有了这行,引用JS库都可以有自动补全了,甚至还有参数列表:

webp

snake.gif

是不是顿时觉得方便了许多呢:-)。如果稍微研究下VS Code的安装目录,你会发现有个 lib 目录保存了许多接口文件:

ls [VS Code]安装目录\resources\app\extensions\node_modules\typescript\lib
2018/06/06  17:36             4,505 lib.dom.iterable.d.ts
2018/06/06  17:36             2,902 lib.es2015.collection.d.ts
2018/06/06  17:36            19,608 lib.es2015.core.d.ts
2018/06/06  17:36             1,349 lib.es2015.d.ts
2018/06/06  17:36             2,129 lib.es2015.generator.d.ts
2018/06/06  17:36            14,537 lib.es2015.iterable.d.ts
2018/06/06  17:36            10,648 lib.es2015.promise.d.ts
2018/06/06  17:36             1,961 lib.es2015.proxy.d.ts
2018/06/06  17:36             1,913 lib.es2015.reflect.d.ts
2018/06/06  17:36             1,657 lib.es2015.symbol.d.ts
2018/06/06  17:36            10,300 lib.es2015.symbol.wellknown.d.ts
2018/06/06  17:36             4,870 lib.es2016.array.include.d.ts
2018/06/06  17:36               957 lib.es2016.d.ts
2018/06/06  17:36           643,319 lib.es2016.full.d.ts
2018/06/06  17:36             1,152 lib.es2017.d.ts

原来 VS Code也有依靠这些接口文件,完成原生JS 的自动补全的。



作者:切糕糕
链接:https://www.jianshu.com/p/45cd21aae931


打开App,阅读手记
0人推荐
发表评论
随时随地看视频慕课网APP