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

TypeScript如何对userApproval对象做类型校验?现有类型定义是否正确?

你当前的类型定义不正确,问题如下:

  • 键名与实际值完全不匹配:运行时userApproval的字段是带.的小写蛇形格式,比如l8s.restart_trigger、manager.cleanup,你定义的是全大写下划线分隔的命名,两者完全不一致
  • 包含.这类特殊字符的键,在TypeScript类型定义中需要用引号包裹,不能直接作为标识符书写

正确的类型定义示例

export type UserApproval = {
  "l8s.restart_trigger": boolean;
  "l8s.system_scale": boolean;
  "manager.cleanup": boolean;
  "manager.extend": boolean;
};

运行时类型校验方案

如果你需要在运行时判断变量是否符合UserApproval类型,可以编写类型守卫函数实现:

function isUserApproval(val: unknown): val is UserApproval {
  if (typeof val !== 'object' || val === null) return false;
  const target = val as Record<string, unknown>;
  const requiredKeys = ["l8s.restart_trigger", "l8s.system_scale", "manager.cleanup", "manager.extend"];
  return requiredKeys.every(key => typeof target[key] === 'boolean');
}

使用时先调用该函数校验,通过后即可正常按UserApproval类型使用变量。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 00:06:04