将JS sprintf转换为Typescript等效项

时间:2018-01-22 13:00:32

标签: javascript typescript

为Javascript寻找一种'sprintf'函数,我发现这个小函数既简单又可以实现我想要的功能:

function sprintf(format) {
    var args = Array.prototype.slice.call(arguments, 1);
    var i = 0;
    return format.replace(/%s/g, function() {
        return args[i++];
    });
}

(原始来源:https://gist.github.com/rmariuzzo/8761698

问题是我想在一个用Typescript编写的Angular 4应用程序中使用这个函数,所以我不能调用它,因为编译器抱怨参数的数量与函数所需的不匹配。 / p>

我知道有一些Typescript等价物(f.i。https://github.com/alexei/sprintf.js)但需要安装一个带有npm的模块,并且比我需要的更复杂。

我从未在Typescript中使用多个参数函数(除了在可选参数上使用'?'之外)所以我不知道如何调整此函数以用于Angular应用程序。

有什么想法吗?谢谢!

1 个答案:

答案 0 :(得分:1)

您可以使用rest parameters

function sprintf(format, ...args) {
    var i = 0;
    return format.replace(/%s/g, function() {
        return args[i++];
    });
}