TypeScript报错2339:DimensionAction类型无UPDATE_COLUMNS属性
问题排查与修正
你遇到的TypeScript错误不是IDE问题,是代码里的枚举使用逻辑错误:
在dimensionReducer函数中,action参数是DimensionAction枚举的具体值(比如'update_columns'或'update_rows'),而非枚举类型本身。你在switch的case分支里写action.UPDATE_COLUMNS,相当于拿一个字符串值去访问它的UPDATE_COLUMNS属性,这显然不存在,所以TypeScript抛出了类型错误。
正确的写法应该直接引用枚举类型的成员:
export enum DimensionAction { UPDATE_ROWS = 'update_rows', UPDATE_COLUMNS = 'update_columns', } const dimensionReducer = (state: Dimension, action: DimensionAction): void => { switch (action) { case DimensionAction.UPDATE_COLUMNS: break case DimensionAction.UPDATE_ROWS: break default: throw new Error('Must pass action') } }
额外补充两点:
yarn lint没报错是因为它通常只检查代码风格(比如缩进、变量命名规范),不会执行TypeScript的类型校验,要做类型校验需要运行tsc --noEmit命令。- 原代码里的
throw Error('...')建议改成throw new Error('...'),这是符合标准JavaScript语法的写法。
内容的提问来源于stack exchange,提问作者Matt
相关产品推荐
相关产品推荐

