首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >离子2角2全局导入扩展方法

离子2角2全局导入扩展方法
EN

Stack Overflow用户
提问于 2017-04-16 16:21:10
回答 1查看 487关注 0票数 4

我对日期原型做了一些扩展,比如:

代码语言:javascript
运行
复制
interface Date {
    YearsFromToday(): number;
}

Date.prototype.YearsFromToday = function (): number {
    // implementation 
}

我使用的是ionic2教程-v2模板,这是一个相当标准的布局- app.html、app.ts、app.module等等。

我在想,在全球范围内,是否有一种简单的方式来宣布这一点。我不知道在这个项目里该把这个放哪儿?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-04-17 06:41:31

把你的猴子补丁代码放到一个文件中。例如,您可以称它为monkey-patch-date.ts,:

monkey-patch-date.ts

代码语言:javascript
运行
复制
interface Date {
    YearsFromToday(): number;
}

Date.prototype.yearsFromToday = function (): number {
    // implementation 
}

然后将其导入到main.ts或您的输入模块中:

main.ts

代码语言:javascript
运行
复制
import './monkey-patch-date';

轮流。你可以让它成为一个模块,导出它的猴子补丁程序,如果你想更明确地说你在做一些危险的事情。

monkey-patch-date.ts

代码语言:javascript
运行
复制
declare global {
    interface Date {
        yearsFromToday(): number;
    }
}

export default function () {
    Date.prototype.yearsFromToday = function (): number {
        // implementation 
    };
}

然后像进口一样

main.ts

代码语言:javascript
运行
复制
import monkeyPatchDate from './monkey-patch-date';
monkeyPatchDate();

另一种选择,特别是对库作者有用的是,允许猴子修补,但不需要它,同时仍然公开该功能。

下面是一个示例:

date-augmentations/index.ts

代码语言:javascript
运行
复制
export function yearsFromToday(date: Date): number {
    // implementation 
}

date-augmentations/monkey-patch.ts

代码语言:javascript
运行
复制
import {yearsFromToday} from './index';

declare global {
    interface Date {
        yearsFromToday(): number;
    }
}

Date.prototype.yearsFromToday = function() {
    return yearsFromToday(this);
}

现在,使用者可以通过运行

代码语言:javascript
运行
复制
import 'date-augmentations/monkey-patch';

可以通过导出访问该功能,而无需猴子修补任何内容。

代码语言:javascript
运行
复制
import {yearsFromToday} from 'date-augmentations';

const date = new Date('12-12-2023');
const yft = yearsFromToday(date);
console.log(yft); // prints 6
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43439317

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档