Javascript-Ionic 2 Angular 2全局导入扩展方法
作者:互联网
我对Date原型做了一些扩展,例如:
interface Date {
YearsFromToday(): number;
}
Date.prototype.YearsFromToday = function (): number {
// implementation
}
我正在使用ionic2教程–v2模板,这是一个非常标准的布局-app.html,app.ts,app.module等.
我想知道是否有一种简单的方法可以在全局范围内进行声明.我不确定将其放在项目的哪个位置?
解决方法:
将您的猴子补丁代码放入文件中.
您可以将其称为Monkey-patch-date.ts,例如:
猴子补丁日期
interface Date {
YearsFromToday(): number;
}
Date.prototype.yearsFromToday = function (): number {
// implementation
}
然后将其导入main.ts或任何您的输入模块中:
主要
import './monkey-patch-date';
交替.如果您想更明确地指出自己正在做危险的事情,可以将其设为导出其猴子修补程序的模块.
猴子补丁日期
declare global {
interface Date {
yearsFromToday(): number;
}
}
export default function () {
Date.prototype.yearsFromToday = function (): number {
// implementation
};
}
并像导入
主要
import monkeyPatchDate from './monkey-patch-date';
monkeyPatchDate();
另一个替代方法(对库作者特别有用)是允许猴子修补,但在仍然公开功能的同时不需要它.
这是一个例子:
日期扩展/index.ts
export function yearsFromToday(date: Date): number {
// implementation
}
日期扩展/monkey-patch.ts
import {yearsFromToday} from './index';
declare global {
interface Date {
yearsFromToday(): number;
}
}
Date.prototype.yearsFromToday = function() {
return yearsFromToday(this);
}
现在,消费者可以通过运行以下方式猴子对Date原型进行修补
import 'date-augmentations/monkey-patch';
可以通过导出访问功能,而无需猴子打补丁
import {yearsFromToday} from 'date-augmentations';
const date = new Date('12-12-2023');
const yft = yearsFromToday(date);
console.log(yft); // prints 6
标签:angular,typescript,ionic2,javascript 来源: https://codeday.me/bug/20191111/2020146.html