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

TypeScript中如何从类型声明获取__typename属性的字符串值?

答案

不行哦,你没法直接通过OfferTypes.__typename来获取这个字符串,核心原因在于TypeScript的类型是编译时概念——当代码被编译成JavaScript后,所有的类型定义都会被完全擦除,运行时根本不存在OfferTypes这个对象,自然也就没法访问它的__typename属性。

那怎么解决这个问题呢?这里有两个实用的方案:

1. 用运行时常量绑定类型

把__typename的字符串值做成一个运行时可用的常量,再让类型引用这个常量,这样既保证类型的准确性,又能在运行时拿到这个字符串:

// 定义运行时可访问的常量
export const OFFER_TYPE_PAGINATION_TYPENAME = 'OfferTypeTypePagination';

// 类型引用常量,确保类型与运行时值完全一致
export type OfferTypes = { 
  __typename: typeof OFFER_TYPE_PAGINATION_TYPENAME; 
  items: any[]; 
  total: number; 
};

// 运行时直接调用常量即可
console.log(OFFER_TYPE_PAGINATION_TYPENAME); // 输出 "OfferTypeTypePagination"

2. 访问实例的__typename属性

如果OfferTypes是用来描述API返回的数据或者你在运行时创建的对象,那么当你有一个符合该类型的实例时,直接访问实例的__typename是完全可行的——因为这个属性是真实存在于运行时对象中的:

// 假设这是符合OfferTypes类型的实例(比如从API获取的)
const offerData: OfferTypes = {
  __typename: 'OfferTypeTypePagination',
  items: [],
  total: 0
};

// 直接访问实例的__typename属性
console.log(offerData.__typename); // 输出 "OfferTypeTypePagination"

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.11 09:08:47