【问题标题】:String interpolation in Typescript with string read from fileTypescript中的字符串插值与从文件中读取的字符串
【发布时间】:2017-07-24 22:35:45
【问题描述】:

我在 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 中是否有更好的方法。

【问题讨论】:

    标签: node.js typescript


    【解决方案1】:

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

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

    【讨论】:

    • 感谢您的链接,我发现 Lodash 提供了我可以使用的模板功能。我会接受的!
    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-01-30
      • 2019-05-23
      • 2017-08-30
      • 2015-06-24
      • 1970-01-01
      相关资源
      最近更新 更多