Property ‘proxy‘ does not exist on type ‘ComponentInternalInstance | null‘.ts

问题

Vue 3 使用 getCurrentInstance 获取当前正在执行的组件实例 TypeScript 报错。

typescript 复制代码
const { proxy } = getCurrentInstance();  

报错信息:

typescript 复制代码
Property 'proxy' does not exist on type 'ComponentInternalInstance | null'.ts

解决方案

在Vue 3的Composition API中,getCurrentInstance()返回的类型是ComponentInternalInstance | null。因此,当你使用const { proxy } = getCurrentInstance();时,TypeScript会报错,因为proxy属性在类型定义中并不存在。

为了解决这个问题,你可以使用类型断言(Type Assertion)来告诉TypeScript你确信返回的实例是非空的。在这种情况下,你可以使用非空断言!:

typescript 复制代码
const { proxy } = getCurrentInstance()!;

请注意,使用非空断言表示你确信getCurrentInstance()永远不会返回null。如果你不能确保这一点,最好在代码中进行适当的空值检查。例如:

typescript 复制代码
const instance = getCurrentInstance();

if (instance) {
  const { proxy } = instance;
  // 现在你可以安全地使用 proxy
} else {
  console.error("无法获取组件实例");
}
相关推荐
命运之光12 小时前
【最新】ChromeDriver最新版本下载安装教程,ChromeDriver版本与Chrome不匹配问题
前端·chrome
星离~14 小时前
Vue响应式原理详解:从零实现一个迷你Vue
前端·javascript·vue.js
梦65014 小时前
React 简介
前端·react.js·前端框架
一只小阿乐14 小时前
react 中的判断显示
前端·javascript·vue.js·react.js·react
光影少年14 小时前
useMemo 和 React.memo区别
前端·react.js·前端框架
小沐°14 小时前
React-页码组件
前端·javascript·react.js
消失的旧时光-194314 小时前
Flutter 与 React/Vue 为什么思想一致?——声明式 UI 体系的深度对比(超清晰版)
vue.js·flutter·react.js
零一科技14 小时前
Vue3学习第三课: ref 与 reactive 选择指南
前端·vue.js
余杭子曰15 小时前
播放状态与播放序列的关系(999篇一线博客第107篇)
前端
e***U82016 小时前
前端路由懒加载实现,React.lazy与Suspense
前端·react.js·前端框架