实际上,我目前正在考虑为在组件中创建的所有对象或引用创建扩展方法
我知道如何在typeScript中创建扩展方法,但我无法获得要使用接口来实现所需行为的东西。
我尝试在界面中使用对象,但无法正常工作
MyExtension方法:extension.model.ts
declare global {
interface Object {
thousandsSeperator(): String;
}
}
Object.prototype.thousandsSeperator = function(): string {
return Number(this).toString().replace(/\B(?=(\d{3})+(?!\d))/g, ',');
}
export {};
// this is just a simple extension method
现在,每当有人尝试创建类或接口引用的对象时,他们都应该获得我创建的扩展方法。
// Object
Object1 = new MyComponentClass();
// Reference
Object2: MyComponentClass;
this.Object1.thousandsSeperator();
this.Object2.thousandsSeperator();
答案 0 :(得分:0)
下例中的fooObj 被分配给Foo对象。所以所有 可以访问对象中的方法和继承的属性。
但是
fooObj1 被声明为 Foo 类型。即,我们声明 fooObj1 只能具有 Foo 类型的对象。
// Add thousandsSeperator in the Object interface.
interface Object {
thousandsSeperator(): String;
}
// assign the method to the object prototype.
Object.prototype.thousandsSeperator = function(): string {
// this is the instance of the object and value is the property on it.
return Number(this.value).toString().replace(/\B(?=(\d{3})+(?!\d))/g, ',');
};
// now all the object of the created will get the thousandsSeperator method.
class Foo {
value: string = '123456';
}
// create an object
let fooObj: Foo = new Foo();
// here on the fooObj thousandsSeperator method can be accessed.
fooObj.thousandsSeperator();
// undeclared variable.
let fooObj1: Foo
// this is eqivalent to var fooObj1;