【发布时间】:2019-11-06 01:04:34
【问题描述】:
我在Logger 类中得到了以下静态方法。我很不明白tsserver 错误。
日志级别
const enum LogLevel {
ERROR = 0,
WARN = 1
}
export default LogLevel;
记录器
static defaultHandler(level: LogLevel, ...message: readonly string[]) {
if (!Logger.isLevelEnabled(level)) return;
let handler: Function;
switch (level) {
case LogLevel.ERROR:
handler = console.error;
break;
case LogLevel.WARN:
handler = console.warn;
break;
}
// [tsserver 2454] Variable 'handler' is used before being assigned
handler(...message);
}
由于LogLevel 是一个枚举,处理程序永远不会被取消分配。如果我添加 if,tslint 会抱怨。
// [tslint 1] expression is always true (strict-type-predicates)
if (handler !== undefined) handler(...message);
我什至删除了no-let tslint 规则,因为它出于某种原因在switch 案例中看不到分配,并希望我使用const handler: Function;。谁能解释一下这里发生了什么。
【问题讨论】:
-
在switch中提供
default,否则可能是未定义的,或者用somehting初始化
标签: typescript