深入理解TypeScript
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

3.10 模板字符串

从语法上来说,这些模板字符串使用反引号(即'),而不是使用单引号(’)或双引号(")。设计模板字符串的目的有3个。

● 字符串插值。

● 多行字符串。

● 标记模板。

1.字符串插值

一个常见的用例是,当你想要从一些静态字符串+一些变量中生成字符串时,你需要使用一些模板逻辑,这就是模板字符串名字的由来。下面可能是你之前生成HTML字符串所用的方法。

而如果使用模板字符串,那么你只需要这么做。

注意:在插值${和}中的任何占位符,都可以被看作JavaScript表达式来处理和执行。例如,你可以像下面这样做数学计算。

2.多行字符串

你是否曾经想在JavaScript字符串中添加换行符,或者想嵌入一些歌词?这时,你需要使用我们最喜欢的转义字符\来转义换行符,然后在下一行手动添加一个\n。示例如下。

在使用TypeScript时,你可以使用模板字符串。

3.标记模板

你可以在模板字符串前放置一个函数,它被称为tag。它将预处理模板字符串及其占位符的表达式,然后返回一个值。一些需要注意的要点如下。

● 所有静态字面量都将作为第1个参数传入数组。

● 占位符表达式的所有值都将作为其余参数传入,最常见的情况是,使用rest参数将这些参数转换为数组。

在下面的例子中,我们有一个标记函数(名字是htmlEscape),它将从所有占位符中转义HTML。

注意,你可以将placeholder注解为any[]类型,无论你将它注解成什么,TypeScript都将进行类型检查,以确保所调用占位符的类型与注解相匹配。例如,如果你想处理string或number类型的数据,你可以注解成...placeholders:(string|number)[]。

4.生成JavaScript

如果编译目标是ES6以上的版本,那么生成的代码会非常简单。多行字符串会被编译成转义字符串,字符串插值会被编译为字符串连接,标记模板则被称为函数调用。

5.小结

多行字符串和字符串插值在任何语言中都是很受欢迎的。现在你可以在JavaScript中使用它们,这很棒,感谢TypeScript。标记模板允许你创建功能强大的字符串实用程序。