Typescript中的字符串插值,从文件中读取字符串

时间:2015-09-03 15:44:06

标签: node.js typescript

我在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,但我想知道在打字稿中是否有更好的方法。

2 个答案:

答案 0 :(得分:6)

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

您需要在运行时找到一种方法。您可以在问题中使用您链接的the codeanother 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);