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

TypeScript中如何不使用any定义可通过socketId索引的peers嵌套对象类型

最优声明方案

首先先定义单个Peer项的类型:

// 可根据你的实际业务调整属性的具体类型,以下为WebRTC场景下的默认类型示例
interface Peer {
  initiator: boolean;
  config: RTCConfiguration;
  stream: MediaStream;
}

然后声明peers变量,用TS内置的Record工具类型实现字符串索引访问:

let peers: Record<string, Peer> = {};

说明

  • Record<string, Peer>等价于手写索引签名{ [socketId: string]: Peer },是TS针对键值对对象的标准简化写法,可读性更高。
  • 如果你的connUserSocketId有更精确的类型(比如是固定的字符串字面量联合),可以把Record的第一个泛型参数替换为对应的类型,能获得更严格的类型校验。
  • 如果开启了strictNullChecks配置,访问peers[connUserSocketId]时返回的类型为Peer | undefined,你可以通过提前判空或者加非空断言!来处理。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.23 14:45:00