TypeScript调用includes()检查枚举值时报错(已发现是笔误)
解决TypeScript枚举数组includes调用时的类型错误
错误原因
你遇到的问题是语法笔误——把数组的includes()方法调用的圆括号()写成了方括号[]。原代码中:
if (status.allowedStages?.includes[stage.stageType]) {
这里includes是数组的内置方法,你用方括号访问时,TypeScript会把它当成一个对象,尝试用枚举值stage.stageType作为键去索引这个函数对象,但函数本身并没有对应的枚举值属性,因此抛出了类型错误。
修复方案
把方括号替换成圆括号,正确调用includes()方法即可:
if (status.allowedStages?.includes(stage.stageType)) {
Array.prototype.includes()用于判断数组是否包含指定元素,调用时必须通过圆括号传递要查找的元素参数。
修复后的完整代码片段
const stage = stages[previousStageType]; if (skipValidation) { return stage; } if (stage.isAllowed) { return stage.isAllowed(status, settings) ? stage : null; } // 修复后的代码行 if (status.allowedStages?.includes(stage.stageType)) { return stage; } return null;
内容的提问来源于stack exchange,提问作者Esben von Buchwald
相关产品推荐
相关产品推荐

