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
相关产品推荐
相关产品推荐

