【发布时间】:2018-11-20 14:13:05
【问题描述】:
我是Typescript 的新手。
我有这些枚举和常量变量:
enum VALUE_MAP = { value1 = 'value1', value2 = 'value2', value3 = 'value3' }
const SOME_CONSTANT = [VALUE_MAP.value1, VALUE_MAP.value2];
还有一个使用SOME_CONSTANT检查值是否存在的方法。
export const hasValue = (value: string) => SOME_CONSTANT.includes(value);
这给了我错误:
TS2345: Argument of type 'string' is not assignable to parameter of type 'VALUE_MAP'.
使用(value: VALUE_MAP) => 可以解决问题,但我不想这样做,或者我想知道为什么VALUE_MAP 被用作类型
有什么帮助吗?
【问题讨论】:
-
我会在这种情况下使用枚举。
-
澄清你的对象是否像这样
const VALUE_MAP = { value1: 'valueA', value2: 'valueB', value3: 'valueC' }调用hasValue时你会传递value1或valueA? -
它是根据您声明
VALUE_MAP的方式推断类型。我猜const VALUE_MAP: any = {...}在这种情况下会解决这个问题,但这是一种解决方法.... enum 是按照@DanielA.White 评论的方式。 -
@DanielA.White 忘了提,但
VALUE_MAP是枚举。 -
@DanielA.White 感谢您的提示,将
VALUE_MAP更改为 const 修复了错误。
标签: javascript reactjs typescript constants