Angular2和Typescript:如何添加字符串扩展方法/原型

前端之家收集整理的这篇文章主要介绍了Angular2和Typescript:如何添加字符串扩展方法/原型前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我想将扩展方法format()添加到String.所以我的期望是我可以在我的项目中的任何地方使用String.format.
我遵循了 topic的准则,但这没有用.我收到了这个错误

谁能帮我?

提前致谢.

p.s:我想像我在angular 1.xx中那样添加扩展方法

编辑

使用declare global不会出错.

declare global {
interface String {
    format(): string;
}}

String.prototype.format = function () :string {
var result = arguments[0];
for (var i = 0; i < arguments.length - 1; i++) {
    var reg = new RegExp("\\{" + i + "\\}","gm");
    result = result.replace(reg,arguments[i + 1]);
}
return result;}

我们如何使用String.format(‘< img alt =“{0}”title =“{0}”src =“{1}”/>‘,name,id);
由于格式不需要参数

基于 this playground它工作得很好.

它可能不适合你,因为你可能正在使用模块(导入/导出),在这种情况下你需要在global augmentation中这样做:

declare global {
    interface String {
        foo(): number;
    }
}

然后在向原型添加foo时不会出错.

编辑

好像你想在String上使用静态函数,所以你需要这样做:

declare global {
    interface StringConstructor {
        format(): string;
    }
}

String.format = function (...args: string[]) {
    ...
}

我还在签名中添加了… args:string [],告诉编译器函数需要任意数量的字符串作为参数.

猜你在找的Angularjs相关文章