本文说的类型支持仅仅是 VS Code 的 IntelliSense 功能,并非静态类型语言的类型检查,所以对开发的效率提升不大,但是可以提高项目的可维护性,即所谓代码即文档 CaaD(Code as a Documentation)。
使用过 IDE 与静态类型语言的同学可能很熟悉了,比如 VS/C# 的自动导入命名空间、Code Refactor(重命名属性/方法/类名等标识符,并自动修改所有的引用)、转到定义(转到声明、查找引用)甚至代码段提取(提取一段代码作为一个函数,并自动将依赖的变量作为参数输入)等各种强大的功能。
而 JS 是一个动态类型的语言,为了支持上述功能,VS Code 团队开发了一个插件,名为 Visual Studio IntelliCode,最早该插件是作为一个外部扩展,后来直接作为内部扩展,可以直接使用。
以下摘自官网描述:
IntelliSense is a general term for a variety of code editing features including: code completion, parameter info, quick info, and member lists. IntelliSense features are sometimes called by other names such as "code completion", "content assist", and "code hinting."
翻译过来就是:
IntelliSense是各种代码编辑功能的通用术语,包括:代码完成、参数信息、快速信息和成员列表。IntelliSense功能有时被称为其他名称,如“代码完成”、“内容辅助”和“代码提示”。
特别注意:在成员提示被关闭的情况下可以使用快捷键 Ctrl+Space 重新打开成员提示(极大的可能与 Windows 系统默认的输入法切换键冲突导致失效,此时可以考虑更换快捷键),与 Ctrl+Shift+Space 打开参数提示。
首先要说的是用 vue 脚手架生成的项目中,并无该文件,且一般情况下没有该文件也会有 IntelliSense 功能。
这里配置 jsconfig.json 的必要原因是:
无该文件会导致项目内的 .d.ts 文件不一定被加载;
对于 Vue 项目来说,导入时使用 @ 是很常见的行为,但是这将会导致 IntelliSense 无法识别。
一个常见的 jsconfig.json 配置如下:
"compilerOptions": {
"baseUrl": ".",
"paths": {
"@/*": [
"src/*"
"include": [
"./src/**/*.d.ts",
"./src/**/*.js",
"./src/**/*.vue"
这个 jsconfig.json 包含了对导入时 @ 的解析以及扫描项目 src 目录及其子目录下的 .d.ts、.js、.vue 文件,以建立类型、引用等相关信息(转到定义、查找引用以及自动导入的关键)。
配置完成后重新加载(Ctrl+Shift+P 输入 Reload Window 并回车)即可。此时输入 import '@/' 后会有路径提示(如果没有可能是还没有加载完成,耐心等待一会儿)。
值得注意的是,导入 SFC 文件时,文件的路径必须添加 .vue 后缀:
import Display from '@/components/display/display.vue'
这样的话你就可以将光标移动到组件名称上按下 F12 键以导航到组件的定义,否则是无法导航到组件定义的。
另外,配置完成后,还可以在 <template> 标签中得到自定义组件的补全提示,如果没有导入,甚至可以在敲回车补全时自动导入:
三、JSDoc 注释
即使用注释来说明代码。在 VS Code 中可以通过在 js 类型的文件中输入 /** 来触发 JSDoc 代码片段,以下是一些实例:
* 注释1
const info = 'info'
* 注释2。
const person = {
/** 姓名 */
name: 'hello',
/** 年龄 */
age: 2
* 将一个字符串反过来。
* @param {string} str 需要反转的字符串。
* @returns {string} 反转后的字符串。
function reverseString (str) {
return str.split('').reverse().join('')
这种注释可以提供如下的效果,在成员提示的列表中可以显示注释内容,即做到文档的效果(同时鼠标悬浮时也会有文档的提示):
可以看到,第二张图标注了传入参数 str 的类型,在输入 str.sp 时会给予成员提示,敲回车键后即会自动完成。
四、类型声明文件
类型声明文件是一个 .d.ts 文件,使用过 TypeScript 的同学应该不陌生,在使用 TypeScript 开发库项目时,如果需要发布到 npm 仓库,则需要编译成 js 发布,并可以用 tsc 生成对应的类型声明文件,以供使用者参照。
对于没有 TypeScript 的 Vue 项目,仍然可以使用 .d.ts 文件带来的部分便利,虽然需要手写 .d.ts 文件。
一个 .d.ts 文件的例子如下:
* 应用数据的模型。
declare type Model = {
* 应用数据的属性字典。
dataMap: {
[key in PropertyNames]: Property
* 属性名称列表。
PropertyList: string[]
* 应用数据的数据属性名称列表。
declare type PropertyNames ='id' | 'type' | 'key' | 'summary'
* 应用数据的属性定义。
declare interface Property {
* 属性的名称。
name: string
* 属性值的可读形式。
label: string
* 属性值。
value: PropertyValue
* 属性值的类型。
declare type PropertyValue = boolean | number | string | boolean[] | number[] | string[]
上述代码并不会生成 js 代码,仅仅在开发期间被编辑器或集成开发环境识别以用作代码自动完成、成员提示等功能。在数据结构较为复杂时,可以利用类型声明文件作为文档以提高项目的可维护性。
虽然类型声明文件不参与 js 代码的执行,但是仍然可以利用类型声明文件影响到 js 代码的编写,将上述类型声明文件保存后,即可在 js 代码中以 JSDoc 的形式引用:
* 应用数据模型。
* @type {Model}
const model = {
dataMap: {
id: 1
console.log(model.dataMap.id.value)
效果如下:
deprecated
简单来讲就是,若某类或某方法加上该注解之后,表示此方法或类不再建议使用,调用时也会出现删除线,但并不代表不能用,只是说,不推荐使用,因为还有更好的方法可以调用。
* @deprecated 请使用 xxx 替代。
const preson = {}
export { preson }
五、SFC 的成员类型
<template>
<input v-model="value" />
</template>
<script>
export default {
props: {
* 应用数据模型。
* @type {import('vue').PropOptions<Model>}
model: {
type: Object,
required: true
* 需要编辑的字段。
* @type {import('vue').PropOptions<PropertyNames>}
property: {
type: String,
required: true
data () {
return {
value: this.model.dataMap[this.property].value,
* @type {Model}
other: {}
methods: {
* 获取属性值。
* @param {Model} issue 应用数据模型。
* @param {PropertyNames} property 属性名称。
* @returns {PropertyValue} 属性值。
getPropertyValue (issue, property) {
issue.dataMap[property].value
</script>
上面分别标记了 props、data、methods 的数据类型、参数及返回值,在引用这些属性、变量时,将会有自动完成提示、参数信息等:
系列文章目录提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加例如:第一章 Python 机器学习入门之pandas的使用提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录系列文章目录 前言 一、pandas是什么? 二、使用步骤 1.引入库 2.读入数据 总结前言本文说的类型支持仅仅是VSCode的IntelliSense功能,并非静态类型语言的类型检查,所以对开发的效率提升不大,但是可以提高项目的可维护...
库的简单IntelliSense和语法突出显示。
该插件默认情况下会格式化html代码。 您可以通过设置"lucia.format.enabled": false来禁用此"lucia.format.enabled": false :
" lucia.format.enabled " : false
Lua编程助手(Lua Coder Assistant)
Lua编程助手是一种能够为Lua开发人员提供
智能
帮助的基于
VSCODE
的插件
Lua编码助手是一个
vscode
扩展尝试,旨在为使用lua语言编码的编码人员提供语言
智能
。
安装(Install)
本插件可在微软
VSCODE
插件商店中搜索LuaCoderAssist进行安装
在LuaCoderAssist的扩展市场中搜索LuaCoderAssist并安装。
功能(功能)
类型推导(LIMITED))
定义加速度
代码格式化
给函数插入LDoc格式的注释
支持LOVE,JIT,BUSTEDTES补全
支持代码补
在C++项目中,C/C++ 和CMake Tools插件配合使用
使用
vscode
中的cmake tools 插件进行cmake工程的构建。
构建完成后会在工程目录中生成build文件夹。
vscode
的代码
感知
依赖于c/c++插件。当依赖第三方包时需要设置第三方包的搜索路径。
方法一:配置c_cpp_properties.json文件
按F1后输入C/C++ Edit Configurations(UI),打开插件设置
2. 设置包含路径,在以下设置中写入搜索路径