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

TypeScript中如何定义含动态键名但子结构固定的接口?

实现含动态子键的TypeScript接口

完全可以实现你想要的结构,核心思路是将固定子结构抽成独立接口,再给动态键的层级加上索引签名,具体写法如下:

  1. 先定义固定的子结构接口
// 定义每个bookId对应的固定子结构
interface BookInfo {
  token: string;
  accessKey: string;
}
  1. 再定义顶层的Library接口,给Books内部添加索引签名
interface Library {
  Books: {
    // 动态bookId作为键,值必须符合BookInfo结构
    [bookId: string]: BookInfo;
  };
}

这样定义后,既保留了Books这个层级结构,又能适配任意动态生成的bookId,同时每个bookId对应的子结构会被TypeScript严格校验,完全满足你的需求。

举个使用示例:

// 符合类型约束的API返回数据
const apiResponse: Library = {
  Books: {
    "book-001": { token: "t-123", accessKey: "k-456" },
    "book-xyz": { token: "t-789", accessKey: "k-0ab" }
  }
};

// 正常访问动态键的属性
console.log(apiResponse.Books["book-001"].token);

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 06:54:55