编程语言
首页 > 编程语言> > Javascript-Ionic 2 Angular 2全局导入扩展方法

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