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

TypeScript中call方法调用报错求助:解决name与address未定义问题

解决TypeScript中this.name和this.address未定义的错误

嘿,我来帮你搞定这个问题!报错的核心原因是:TypeScript没办法自动推断出fullName函数内部this的具体类型,所以它不知道this上存在name和address这两个属性,就抛出了未定义的错误。

下面是修改后可以正常运行的代码:

// 定义一个接口,明确描述包含name和address属性的对象结构
interface CompanyProfile {
  name: string;
  address: string;
}

var company = {
  // 给函数的this参数指定类型为CompanyProfile,告诉TypeScript这里的this拥有哪些属性
  fullName: function(this: CompanyProfile, ceo: string, teamcount: string): string {
    return "Name :- " + this.name + "\nAddress:- " + this.address + "\nCEO :- " + ceo + "\nTeamCount :- " + teamcount;
  }
}

var company1 = {
  name:"BOB the builder",
  address: "Disney world"
}

const temporaryVariable = company.fullName.call(company1,"BOB","30")
console.log(temporaryVariable)

关键改动说明:

  • 新增CompanyProfile接口:用它来规范拥有name和address属性的对象类型,让TypeScript能基于这个接口做类型校验。
  • 给fullName函数的this指定类型:这是TypeScript的特有语法,在函数参数列表最前面添加this: CompanyProfile,明确告知TypeScript函数内部this的结构,这样它就不会再报错说name和address未定义了。

运行修改后的代码,你就能得到预期的输出啦~

内容的提问来源于stack exchange,提问作者AFHAM FARDEEN

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.28 13:47:32