Javascript 将JS sprintf转换为等效的Typescript

Javascript 将JS sprintf转换为等效的Typescript,javascript,typescript,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++]; }); } (原始来源:) 问题是我想在Angul

在寻找一种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++];
    });
}
(原始来源:)

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

我知道有相当于Typescript(f.I.)的版本,但需要安装带有npm的模块,而且比我需要的要复杂得多

我从来没有在Typescript中使用过多个参数函数(除了在可选参数上使用“?”),所以我不知道如何调整此函数以在Angular应用程序中使用

有什么想法吗?谢谢

您可以使用:


JavaScript代码是TypeScript代码。我知道Typescript可以转换成Javascript,但也更严格,不是吗?当我尝试调用this.sprintf时(“删除对象%s(%s)”,objId,objName)编译器给出错误“提供的参数与调用目标的任何签名不匹配”。我如何以正确的方式调用它?您可以对参数的类型进行注释,例如
函数sprintf(…格式:any[])
,或者忽略错误。无论类型检查错误如何,TypeScript都会发出代码。所有JavaScript都是TypeScript代码。话说回来,你到底为什么要使用这样一个讨厌的函数?我无法编译应用程序,它总是抱怨参数不匹配。关于我为什么要使用这样一个函数:我来自PHP and我已经使用它的'
sprintf
'函数很多年了。你在Javascript中使用类似的东西吗?
function sprintf(format, ...args) {
    var i = 0;
    return format.replace(/%s/g, function() {
        return args[i++];
    });
}