在 TypeScript 中,可使用 Record 类型精确描述“键为任意字符串、值均为布尔值”的动态对象,比索引签名 { [key: string]: boolean } 更简洁、语义更明确,且具备更好的类型安全性和可维护性。
在 typescript 中,可使用 `record
当你需要为类似 checkboxesState 这类运行时动态生成的对象定义类型(例如:用户勾选后产生 "option1": true, "option2": false 等键值对),核心诉求是——不限定具体键名,但严格约束所有键必须为字符串、所有值必须为布尔值。
此时,推荐使用内置泛型工具类型 Record
interface FieldProps {
checkboxesState: Record<string boolean>;
}</string>
✅ Record
完整的Galileo AI平台 TypeScript/JS SDK 参考,用于评估、观察和保护 GenAI 应用。适用于构建 Node.js 或 TypeScript 项目。
- 语义清晰:直观看懂“记录(键值对)映射”,而非底层索引签名语法;
- 类型推导友好:配合 Object.keys()、Object.entries() 等方法时,TypeScript 能更准确推断键的类型(如 keyof T 的联合字面量类型);
-
扩展性强:若未来需限定键为特定字符串集合(如仅允许 "option1" | "option2" | "option3"),可无缝升级为:
type ValidOption = 'option1' | 'option2' | 'option3'; checkboxesState: Record<validoption boolean>;</validoption>
⚠️ 注意事项:
- 避免使用 any 或 object,会丧失类型检查能力;
- 若对象可能包含非布尔值(如 undefined 表示未初始化),应显式声明联合类型:Record
; - Record 不允许 null 作为键(符合 JavaScript 实际行为),且键始终被视作 string(数字键会自动转为字符串,如 obj[1] 等价于 obj["1"])。
? 小结:对于动态键名、统一值类型的对象,优先选用 Record










