首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

vscode this.~ call变量没有自动完成

在使用 Visual Studio Code (VSCode) 进行开发时,遇到 this.~ 调用变量没有自动完成的情况,可能是由以下几个原因造成的:

基础概念

  • 自动完成:IDE(集成开发环境)提供的功能,能够在编写代码时自动提示变量名、函数名等,以提高编码效率。
  • this 关键字:在 JavaScript 中,this 指向当前执行上下文的对象。

可能的原因及解决方法

  1. TypeScript 类型定义缺失
    • 如果你在使用 TypeScript 或者有类型定义的 JavaScript 文件,确保 this 的类型被正确推断或声明。
    • 解决方法:添加或更新类型注解。
    • 解决方法:添加或更新类型注解。
  • VSCode 设置问题
    • 检查 VSCode 的设置,确保启用了自动完成功能。
    • 解决方法:在设置中搜索 editor.quickSuggestions 并确保其值为 true
  • 插件冲突
    • 某些插件可能与 VSCode 的自动完成功能冲突。
    • 解决方法:尝试禁用最近安装的插件,查看问题是否解决。
  • 文件类型识别错误
    • VSCode 可能没有正确识别文件的类型,导致无法提供正确的自动完成建议。
    • 解决方法:在 VSCode 右下角查看文件类型,并确保它是正确的(例如 .js.ts)。
  • 代码复杂度高
    • 当代码复杂度高时,VSCode 的类型推断可能会受到影响。
    • 解决方法:简化代码结构,或者使用 JSDoc 注释来明确类型。
    • 解决方法:简化代码结构,或者使用 JSDoc 注释来明确类型。
  • 重启 VSCode
    • 有时候简单的重启可以解决临时的软件问题。
    • 解决方法:关闭并重新打开 VSCode。

应用场景

  • 在编写面向对象的 JavaScript 或 TypeScript 代码时,自动完成功能尤为重要,它可以帮助开发者快速准确地引用类的属性和方法。

示例代码

以下是一个简单的 TypeScript 示例,展示了如何通过类型注解来帮助 VSCode 提供准确的自动完成建议:

代码语言:txt
复制
class Example {
    private name: string;

    constructor(name: string) {
        this.name = name;
    }

    greet() {
        console.log(`Hello, ${this.name}!`);
    }
}

const exampleInstance = new Example('World');
exampleInstance.greet(); // 在这里,VSCode 应该能够自动完成 greet 方法

通过上述方法,通常可以解决 VSCode 中 this.~ 调用变量没有自动完成的问题。如果问题依旧存在,建议查看 VSCode 的输出面板或开发者工具中的错误信息,以便进一步诊断问题所在。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

利用注解完成变量自动初始化

利用注解完成对成员变量的自动初始化。应用场景,某应用分为很多个模块,为了简化后续开发人员配置新模块的工作,使项目维护更为容易,运用注解来对模块进行初始化。...而我用的是@Retention(RetentionPolicy.RUNTIME),也是书上用到的,即运行时的再生效的注解,使用反射来完成注解所要达成的目标,有一定的性能损耗。...System.out.println(mainActivity.mManagerModule.des); //NullPointerException,因为mOtherModule没有添加注解...,不会被自动初始化 //System.out.println(mainActivity.mOtherModule.des); } } 而自动初始化是由ModuleHelper来完成的...getDeclaredFields()){ Module module = field.getAnnotation(Module.class); //如果没有模块注解

99340

【Groovy】Groovy 动态语言特性 ( Groovy 中的变量自动类型推断以及动态调用 | Java 中必须为变量指定其类型 )

文章目录 前言 一、Groovy 动态语言 二、Groovy 中的变量自动类型推断及动态调用 三、Java 中必须为变量指定其类型 前言 Groovy 是动态语言 , Java 是静态语言 ; 一、Groovy..., name = "Tom" 则该声明的变量 , 在运行时会被自动推断为 String 类型变量 ; Groovy 的 变量 , 方法 , 函数实参 的类型 , 都是在运行时推断与检查的 ; 二、Groovy...中的变量自动类型推断及动态调用 ---- 在 Groovy 中 , 如果声明 class Groovy { static void main(String[] args) {...= null) { return var10000; } else { this.metaClass = this....Object 类型 , 但是其没有直接调用 name 的方法 , 而是使用 var1[0].call(name, "T"); 动态调用的形式进行 , 因此编译时不报错 ; public static

2.2K30
  • 深入解读 iView,解耦令人头疼的高度耦合复杂逻辑

    到这里调试源码的流程描述完成,没有问题的情况下,接下来看实现过程,注意过程中的关键点,以及它是如何进行解耦的。 3. Tree 的实现过程 3.1 插件安装 ?...复制操作结束后,两个变量实际上将引用同一个对象。因此,改变其中一个变量,就会影响另一个变量。...对于 call() 方法而言,第一个参数是 this 值没有变化,变化的是其余参数都直接传递给函数。换句话说,在使用 call() 方法时,传递给函数的参数必须逐个列举出来。...实际上并没有变化,只是在调试状态下,这儿显示的错误。为了验证这个问题,使用 Firefox 浏览器,跟踪查看对应的变量值,结果如下: ? 触发 on-toggle-expand 的结果如下: ?...可以看到,知道 dispatch 方法执行完成,对应的箭头点击的分支依旧没有折叠起来。 ? ? 这个时候很纳闷了,什么情况下执行的折叠呢?继续往下走。

    2.2K30

    从单向到双向数据绑定0.前言1.单向数据(代表:react)2.观察者模式3.双绑的中间枢纽——Object.defineproperty(代表:vue)4. 脏值检测(代表:angular1)前面说

    e){ return } var args = Array.prototype.slice.call(arguments) for(var i = 0;i自动让他双向数据绑定,所以我们借用js底层的Object.defineproperty。...angular并没有这个操作,也没有意义。因为双绑的M->V一般就是基于ui行为、定时器、ajax这些异步动作,所以这就知道为什么ng-model只能对表单有效了。...在angular1中,私有变量以$$开头,$$watch是一个存放很多个绑定的对象的数组,用$watch方法来添加的,每一个被绑定的对象属性是:变量名、变量旧值、一个函数(用来返回变量新值)、检测变化的回调函数...如果没有监听器在监控某个属性,它在不在作用域上都无所谓。$digest并不会遍历作用域的属性,它遍历的是监听器。一旦将数据绑定到UI上,就会添加一个监听器。

    1.6K40

    从单向到双向数据绑定

    而单向数据流就不同了,我们只有ui行为改变,data就改变并马上反馈到v层,而我们自己在控制台改变data这个值,v层居然不变(model是已经变了并没有反应),只能等到下一次ui行为改变,带上这个data...对的,是行得通,可是这都是死的,也不能自动让他双向数据绑定,所以我们借用js底层的Object.defineproperty。...angular并没有这个操作,也没有意义。因为双绑的M->V一般就是基于ui行为、定时器、ajax这些异步动作,所以这就知道为什么ng-model只能对表单有效了。...watch方法来添加的,每一个被绑定的对象属性是:变量名、变量旧值、一个函数(用来返回变量新值)、检测变化的回调函数。 对于为什么使用一个函数来记录新值(类似vue的computed)?...//数据变量旧值 newVal:exp, //返回数据变量新值的函数 listener:listener

    3.6K20

    使用VSCode进行Go项目的调试以及Call Stack中的Disassembly View解析

    本文将向你展示如何使用Visual Studio Code(VSCode)进行Go项目的调试,并深入理解Call Stack中的Disassembly View。...选择Go语言作为我们的环境,VSCode将会自动生成一个launch.json文件。这个文件中,预设的配置应该已经可以满足大多数的需求。...此外,我们也可以查看Variables窗口中的当前变量值,Watch窗口中的自定义观察表达式,以及Call Stack窗口中的调用栈信息。...Call Stack中的Disassembly View 在深入调试问题或理解程序执行情况时,Disassembly View提供了代码在机器级别上执行的视图。...以下是一些基础的汇编代码指令: MOVQ:将第二个操作数移动到第一个操作数 SUBQ:从第一个操作数中减去第二个操作数 ADDQ:将两个操作数相加 CALL:调用一个过程 有了这些基础知识,我们就可以开始深入理解我们的

    2.8K20

    Vue3 | VueCli、node.js安装、nrm切换镜像源、vue项目结构解读、Router详解、VueX详解

    config文件,放一个单独的文件里,还是放一个package.json里, 这里先选第一个; 最后问,刚刚这一套特性的选择需不需要保存下来方便后续使用,这里不保存; 回车后工程开始创建: 工程创建完成...,使用VSCode启动项目 因为我们无需每次都用cmd去启动项目; 把刚刚创建的项目拉进VSCode,准备使用VSCode启动项目: 在VS Code中,使用Terminal栏启动即可,方便快捷!...【刚拉进来可能启动不了,报9009之类的错, 这时候重启一下VSCode就是了; 如果项目中没有node_modules, 则需先运行npm install安装node_modules依赖!!】...进行 监听 和回调处理, 然后发起一个commit(事件) ---> store/index.js中mutations里 对commit的事件 进行 监听 和回调处理, 处理逻辑中,完成对数据的修改...actions --- testChange"); this.commit('testChange'); } }, modules: { } }) 运行: 点击文本, 可见完成了数据的修改

    6.4K10

    自己实现一个VUE响应式--VUE响应式原理

    这里的响应式(Reactive)不同于CSS布局的响应式(Responsive), 这里的响应式是指数据和视图的绑定,数据一旦更新,视图会自动更新。...$data.a}`; this.el.innerHTML = this.virtualDom; } 复制代码 这样你每次修改$data.a的时候,界面就会自动更新。...我们需要找出一个变量到底被哪些组件使用了,当变量更新的时候只去更新那些用到了的组件。这才是Vue真正的做法: ?...复制代码 多继承例子: function MyClass() { SuperClass.call(this); OtherSuperClass.call(this); } // 继承一个类...Object.defineProperty的get方法没有传入参数,如果我们需要返回原值,需要在外部缓存一遍之前的值,Proxy的get方法会传入对象和属性,可以直接在函数内部操作,不需要外部变量; 3

    65351

    wordpress迁移至hugo及其自动化发布文章全记录

    其他的两个不用管,我这边就没有用到。...Vscode配置 vscode比较简单,可参考此文档:https://eachwang.com/archives/j001html 设置好自己的COS配置信息后,即可上传,快捷键如下: 方式 快捷键 上传剪切板图片...使用github actions,来完成整个CICD过程 编写文章提交脚本,方便提交文章,自动触发webhook,触发github actions 创建一个仓库,比如我这里,仓库名就叫posts ?...需要注意的是,需要把服务器上的~/.ssh/id_rsa拷到github上,对应KEY这个变量。...写完文章直接运行就可以了,点一下就完成了。 ? 因为我使用的是Vscode来写文章,所以使用vscode打开此目录,就像现在似的 ? 真是非常的舒服。

    1.8K11

    活用asyncawait,让Vue变得更好用的装饰器!

    给vue添加一个指示初始化完成的变量。 指业务相关的初始化逻辑都完成了 比如搜索功能:搜索中显示loading,结果为空时显示暂无数据。...但是第一次打开页面时,搜索还没完成,但显示暂无数据又不合适 这个时候就需要一个这样的变量处理边界情况 用于ts环境下的vue 通过装饰器添加这个属性,并包装vue的created, mounted和beforeDestroy...当created或者mounted里发出的请求完成后,就把pageIsReady设为true。使用这个装饰器时,在业务代码中完全无感,没有任何心智负担。...* 在script中使用调用isPageReady.call(this)方法; */ export default function PageReadyStatus() { let createdDone...装饰器会自动检测该函数是否执行完成,并在执行过程中往按钮的Dom节点上添加point:wait属性 import { Component, Vue } from "vue-property-decorator

    51230

    活用asyncawait,让Vue变得更好用的装饰器!

    给vue添加一个指示初始化完成的变量。 指业务相关的初始化逻辑都完成了 比如搜索功能:搜索中显示loading,结果为空时显示暂无数据。...但是第一次打开页面时,搜索还没完成,但显示暂无数据又不合适 这个时候就需要一个这样的变量处理边界情况 用于ts环境下的vue 通过装饰器添加这个属性,并包装vue的created, mounted和beforeDestroy...当created或者mounted里发出的请求完成后,就把pageIsReady设为true。使用这个装饰器时,在业务代码中完全无感,没有任何心智负担。...* 在script中使用调用isPageReady.call(this)方法; */ export default function PageReadyStatus() { let createdDone...装饰器会自动检测该函数是否执行完成,并在执行过程中往按钮的Dom节点上添加point:wait属性 import { Component, Vue } from "vue-property-decorator

    31230

    彻底理解vue的钩子函数,vue的生命周期理解,什么是vue的生命周期,钩子函数

    即此时vue(组件)对象被创建了,但是vue对象的属性还没有绑定,如data属性,computed属性还没有绑定,即没有值。 此时还没有数据和真实DOM。...没有则等到手动绑定调用vm.$mount() 完成了全局变量$el的绑定。...$el有值,但是数据还没有挂载到页面上。即此时页面中的{ {}}里的变量还没有被数据替换 8.模板编译:用vue对象的数据(属性)替换模板中的内容 9....Mounted函数: 模板编译完成,数据挂载完毕 即:此时已经把数据挂载到了页面上,所以,页面上能够看到正确的数据了。...this[key] = obj.computed[key].call(this); } } //created函数 this.created(); //检查是否有el属性

    92340
    领券