【发布时间】:2021-08-26 10:02:35
【问题描述】:
我正在尝试使用基于配置值和enum 的三元运算符设置对象
import { config } from 'src/config'
import {logLevelEnum} from 'a-package-installed'
const someObject = {
logLevel: config.logLevel ? logLevelEnum[config.logLevel] : logLevelEnum.NOTHING,
}
enum 基本上是这样的:
export enum logLevelEnum {
NOTHING = 0,
ERROR = 1,
WARN = 2,
INFO = 4,
DEBUG = 5,
}
但我得到编译错误:
Element implicitly has an 'any' type because index expression is not of type 'number'.
logLevel: config.logLevel ? logLevelEnum[config.logLevel] : logLevelEnum.NOTHING,
~~~~~~~~~~~~~~~
但我不明白为什么它说索引表达式应该是number,因为它是enum。
有人可以向我解释为什么以及如何实现我所需要的吗?
非常感谢。
【问题讨论】:
-
当您声明
logLevel但将其用作logLevelEnum时这是一个错字吗? -
您的代码现在确实显示
logLevelEnum是什么,而不是config.logLevel是什么...我猜config.logLevel不是数字,但应该是 -
config.logLevel的类型是什么? -
config.logLevel是一个字符串,在我使用 TS 之前它工作正常,也许有一个隐式转换?还有关于logLevel被错误使用,我编辑了,我的错。为了简洁起见,我正在“解释”代码????
标签: javascript typescript enums