将您的猴子补丁代码放入文件中。
您可以将其称为 monkey-patch-date.ts,例如:
monkey-patch-date.ts
interface Date {
YearsFromToday(): number;
}
Date.prototype.yearsFromToday = function (): number {
// implementation
}
然后在 main.ts 或任何你的入口模块中导入它:
main.ts
import './monkey-patch-date';
交替。如果您想更加明确地指出您正在做一些危险的事情,您可以将其设为导出其猴子修补程序的模块。
monkey-patch-date.ts
declare global {
interface Date {
yearsFromToday(): number;
}
}
export default function () {
Date.prototype.yearsFromToday = function (): number {
// implementation
};
}
然后像这样导入
main.ts
import monkeyPatchDate from './monkey-patch-date';
monkeyPatchDate();
另一个对库作者特别有用的替代方法是允许猴子修补但不需要它,同时仍然公开功能。
这是一个例子:
日期增强/index.ts
export function yearsFromToday(date: Date): number {
// implementation
}
date-augmentations/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