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

TypeScript中如何遍历unknown类型对象并获取token值?

从unknown类型的body中获取access_token的token值

因为Response接口的body类型是unknown,TypeScript会严格限制对它的属性访问和方法调用,必须先通过类型断言或者类型收窄明确其结构,才能获取目标值。

方法一:类型断言(适合确定数据结构的场景)

先定义对应的数据类型,再通过类型断言将body转换为该类型,直接访问属性:

// 定义匹配数据结构的类型
interface AccessTokenInfo {
  token: string;
  seconds_to_expire: null | number;
}

interface ResponseBody {
  access_token: AccessTokenInfo;
}

const response: Response = {
  statusCode: 200,
  body: {
    access_token: {
      token: '123456789012345566',
      seconds_to_expire: null
    }
  }
};

// 类型断言后获取token
const token = (response.body as ResponseBody).access_token.token;
console.log(token); // 输出:123456789012345566

方法二:类型收窄(更安全,适合不确定数据结构的场景)

通过typeof、in操作符逐步验证数据结构,避免直接断言可能带来的错误:

const response: Response = {
  statusCode: 200,
  body: {
    access_token: {
      token: '123456789012345566',
      seconds_to_expire: null
    }
  }
};

let token: string | undefined;

// 逐步验证body的结构
if (response.body !== undefined && typeof response.body === 'object') {
  const body = response.body as Record<string, unknown>;
  if ('access_token' in body && body.access_token !== null && typeof body.access_token === 'object') {
    const accessToken = body.access_token as Record<string, unknown>;
    if ('token' in accessToken && typeof accessToken.token === 'string') {
      token = accessToken.token;
    }
  }
}

console.log(token); // 输出:123456789012345566

为什么Object.keys()、forEach()之前无法使用?

unknown类型下,TypeScript不允许调用任何方法或访问属性——因为它无法确定该值的具体类型。必须先将类型收窄到object或更具体的类型后,才能使用这些对象方法。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 09:20:26