2015-09-03 152 views
4

我已阅读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,但我想知道是否有更好的方法在Typescript中做到这一点。

回答

6

TypeScript在编译时执行字符串插值,而不是运行时。

您需要在运行时找到一种方法。您可以使用the code您链接到您的问题或这里的another example

+0

感谢您的链接,我发现Lodash提供,我可以用一个模板函数。我会解决的! – reinouts

+0

@reinouts很酷,确实使用它。 –

1

Reinits'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);