我理解ES6
tagged templates的语法.我看不到的是实用的可用性.什么时候比传递对象参数更好,像
jQuery’s AJAX中的设置? $.ajax(‘url’,{/ *这个人在这里* /})
现在我只看到棘手的语法,但是我不明白为什么我需要/使用它.我还发现,在其他重要功能之前,TypeScript团队选择实现它(1.5).标记字符串模板背后的概念是什么?
解决方法
您可以使用标记的模板来构建比常规函数调用更具表现力的API.
例如,我正在开发一个用于JS数组的SQL查询的proof-of-concept library:
let admins = sql`SELECT name,id FROM ${users} WHERE ${user => user.roles.indexOf('admin') >= 0}`
注意它与String插值无关;它使用标记的模板进行可读性.这将很难通过简单的函数调用来直观地构建一些东西 – 我猜你会有这样的东西:
let admins = sql("SELECT name,id FROM $users WHERE $filter",{ $users: users,$filter: (user) => user.roles.contains('admin') })
这个例子只是一个有趣的方面的项目,但我认为它显示了标签模板的一些好处.
另一个例子,也许更明显的是,i18n – 一个标记的模板可以插入区域设置敏感版本的输入.