TypeScript不会为以下代码生成任何错误:
const maybe_a_string: undefined | string = undefined;
const false_or_string: false | string = false;
// I'd like the following to produce an error/warning...
const message_string = `Some readable string info should be here: ${maybe_a_string} ${false_or_string}`;
是否有某种设置可以打开,或者有其他简单的方法来编写最后一行,警告我不要像这样在字符串中使用非字符串变量?(但不需要为每个单独Assert的子字符串添加额外的代码行)
我猜它把它们当作罚款,因为一些类型,如布尔值,数字和杂项对象有一个.toString()
方法...
但是特别是在undefined
的情况下(它实际上没有.toString()方法)--这是很常见的,因为只有在调试的时候你才真正想看到字符串“undefined”在另一个字符串中,但是有很多这样的bug,最终用户会无意中看到“hello undefined”这样的东西。
2条答案
按热度按时间hm2xizp91#
就我个人而言,我会把字符串模板做成一个函数来处理这个问题,这样你就可以指定参数必须是字符串。
idfiyjo82#
投票支持https://github.com/microsoft/TypeScript/issues/30239 [将模板文字插值表达式限制为字符串]
此外,您可以从问题注解中尝试解决方法。