【发布时间】:2017-04-27 02:16:04
【问题描述】:
我想将扩展方法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);
由于format不需要参数
【问题讨论】:
-
无论你有什么都应该工作。 Playground link
-
应该提到这是一种可怕的做法。扩展原型也不是一个好习惯,但 String.format 甚至不是原型方法——后者至少可以像 '...'.format() 一样使用它。在 TypeScript 中使用全局变量作为命名空间是没有意义的。使用模块。如果您在 A1 中执行此操作并切换到 A2 和 TS,那么看起来很有可能最终停止这样做。
标签: angular typescript extension-methods