串联前检查模板字符串

时间:2019-05-22 00:41:40

标签: node.js template-literals

我正在生成如下错误消息:

throw `Do not recognize eventType '${eventType}', recognized events are ${recognizedEvents}.`;

问题是认识到事件是一个对象,但是它将只是toString'ed ...无论如何,所以我可以这样做:

throw `Do not recognize eventType '${eventType}', recognized events are ${util.inspect(recognizedEvents)}.`;

问题不仅在于它更加冗长-有时我只是忘了调用util.inspect()。如果直接传递对象,即使TypeScript也让我编译模板文字。确保在日志中对对象进行适当深度检查的一种好的技术是什么?

1 个答案:

答案 0 :(得分:1)

您是否更可能记得在每个模板字符串中使用tagged template而不是util.inspect

function err(strings, eventType, recognizedEvents) {

  return `${strings[0]}${eventType}${strings[1]}${util.inspect(recognizedEvents)}`;
}

throw err`Do not recognize eventType '${eventType}', recognized events are ${recognizedEvents}.`;

结合@JackBashford的使用JSON.stringify而不是util.inspect的建议,您可以将对象尽可能地细化。