我在Typescript中读到了template strings。当我从这样的文件中读取字符串时,我想知道我是否可以使用它们:
let xmlPayloadTemplate = fs.readFileSync('payload.xml', 'utf8');
如果xmlPayloadTemplate
包含像${placeholder}
这样的占位符,是否有内置的方法来执行替换,以便我可以执行以下操作:
let variableMap = {'placeholder' : 'value' }
xmlPayloadTemplate.interpolate(variableMap)
我知道a similar question about string interpolation in Javascript,但我想知道在打字稿中是否有更好的方法。
答案 0 :(得分:6)
TypeScript在编译时进行字符串插值,而不是运行时。
您需要在运行时找到一种方法。您可以在问题中使用您链接的the code或another example。
答案 1 :(得分:1)
Reinouts' comment向我指出了Lodash图书馆及其template功能。以下是如何使用它的示例。
将Lodash添加到您的项目中:
$ npm install --save lodash
$ npm install --save @types/lodash
然后,在.ts文件中:
import * as _ from "lodash";
let xmlPayloadTemplate = "Some text ${placeholder} and more text";
let variableMap = {placeholder: 'value' };
// use custom delimiter ${ }
_.templateSettings.interpolate = /\${([\s\S]+?)}/g;
// interpolate
let compiled = _.template( xmlPayloadTemplate );
let xmlPayloadCompiled = compiled( variableMap );
// show me
alert(xmlPayloadCompiled);