加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

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

发布时间:2020-12-17 07:23:04 所属栏目:安全 来源:网络整理
导读:我想将扩展方法format()添加到String.所以我的期望是我可以在我的项目中的任何地方使用String.format. 我遵循了 topic的准则,但这没有用.我收到了这个错误: 谁能帮我? 提前致谢. p.s:我想像我在angular 1.xx中那样添加扩展方法 编辑 使用declare global不
我想将扩展方法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 [],告诉编译器函数需要任意数量的字符串作为参数.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读