You need to enable JavaScript to run this app. 如何在TypeScript类内部使用typeof指定类属性的类型
优惠活动
大模型
产品
解决方案
定价
更多

如何在TypeScript类内部使用typeof指定类属性的类型

问题解答

不能直接使用你在示例A中的写法,类的类型注解上下文不支持调用this,但可以通过其他方式实现完全一致的效果。

报错原因

示例B出现Cannot find name 'this'报错的原因很简单:TypeScript的类型注解是编译阶段执行的静态分析逻辑,此时还没有生成类的实例,无法识别指向实例的this关键字。this只能在类方法的执行逻辑、类属性的初始化表达式这类运行时/实例初始化上下文中使用。

两种可行实现方案

方案1:抽离公共类型(最推荐)

把复用的类型单独抽出来定义,可读性和可维护性最高:

type PersonData = {
    age: number;
    name: string;
}

class Person{
    data: PersonData = {age:10, name:'John'};
    // 直接引用抽离的类型取age属性的类型即可
    age: PersonData['age'];
}

方案2:直接通过类名引用实例属性类型

如果不想额外定义独立的类型,也可以直接用类名获取对应属性的类型,效果和示例A的typeof data.age完全一致:

class Person{
    data: {age:number, name:string} = {age:10, name:'John'};
    // Person指代Person类的实例类型,直接逐层取属性类型即可
    age: Person['data']['age'];
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.21 15:06:02