You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

TypeScript对象内用this访问自身属性报错:Property "" does not exist on type never 如何解决?

解决对象字面量中this访问内部属性的TypeScript错误

问题原因

在对象字面量初始化阶段,this并不指向当前正在创建的对象。严格模式下此处this为undefined,非严格模式下指向全局对象,因此TypeScript会推断this的类型为never,自然无法找到b属性,抛出错误。

解决方案

1. 使用getter方法

将c定义为getter函数,函数内部的this会在访问obj.c时正确指向当前对象,TypeScript也能正确推断类型:

const obj = {
  a: "1",
  b: "2",
  get c() {
    return this.b;
  },
};

console.log(obj.c); // 输出 "2"

2. 先创建对象再追加属性

先定义基础对象,之后再为c赋值,直接通过对象本身访问b属性:

const obj = {
  a: "1",
  b: "2",
};
obj.c = obj.b;

console.log(obj.c); // 输出 "2"

3. 使用工厂函数创建对象

如果对象逻辑复杂或需要复用,可通过工厂函数封装创建逻辑,既可以结合getter使用this,也可以提前提取共用值避免依赖this:

// 方式一:结合getter
function createObj() {
  return {
    a: "1",
    b: "2",
    get c() {
      return this.b;
    },
  };
}

const obj = createObj();

// 方式二:提取共用值
function createObj() {
  const bValue = "2";
  return {
    a: "1",
    b: bValue,
    c: bValue,
  };
}

const obj = createObj();

内容的提问来源于stack exchange,提问作者Dharmik soni

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.04 14:30:52