如何实现TypeScript函数参数枚举值自动补全并解决类型错误?
解决TypeScript枚举传参自动补全的问题
有几种方案可以实现你要的自动补全效果,同时避免类型断言:
1. 直接使用枚举成员调用
调用函数时直接传入Color.RED这类枚举成员,IDE会自动补全枚举值,而且类型完全匹配,不会报错:
setColor(Color.RED);
2. 让函数参数兼容枚举值和对应字符串字面量
修改函数的参数类型,同时接受枚举类型和枚举值对应的字符串字面量,这样传字符串时也能触发自动补全:
enum Color { RED="RED", GREEN="GREEN", BLUE="BLUE" } // 用typeof Color[keyof typeof Color]获取所有枚举值的字面量类型 function setColor(color: Color | typeof Color[keyof typeof Color]) { } // 此时输入setColor("R")就会自动补全"RED",且不会报错 setColor("RED");
3. 改用字符串字面量类型替代枚举
如果不需要枚举的额外特性,直接用字符串字面量类型更简洁,天然支持自动补全:
type Color = "RED" | "GREEN" | "BLUE"; function setColor(color: Color) { } // 输入时自动补全三个选项,传字符串直接生效 setColor("RED");
内容的提问来源于stack exchange,提问作者Andrew Nic
相关产品推荐
相关产品推荐

