3

前段时间我创建了两个简单的文件来扩展某些类型的功能。global.d.ts我以这种方式创建了一个:

export { }

declare global {
    interface Date {
        isLeapYear() : boolean;
    }

    interface Array<T> {
        contains(item: T, compareFunc?: (value: T) => boolean): boolean;
        sum(callbackfn: (value: T) => number) : number;
    }

    interface Element {
        closest(selector: string) : Element;
    }

    interface String {
        contains(text: string) : boolean;
    }
}

extensions.ts然后我在原型上创建了文件白实现。我将它导入到我的polyfills.ts

import "zone.js/dist/zone";
import "./extensions";

通过这种方式,我可以在代码中的任何地方使用这些方法。现在我需要在 Angular 11 库中做同样的事情。我创建了global.d.tsand extensions.ts,但是现在呢?没有polyfills.ts文件,如果我尝试在需要其中一种方法(import "../../extensions";)的地方进行简单的导入,则没有任何效果。在控制台中,我收到此错误:

projects/test_library/src/components/test.component/test.component.ts:428:48 - error TS2339: Property 'isLeapYear' does not exist on type 'Date'.

428                         return new Date(value).isLeapYear();
                                               ~~~~~~~~~~~~~~~~~
projects/test_library/extensions.ts:2:20 - error TS2339: Property 'isLeapYear' does not exist on type 'Date'.

2     Date.prototype.isLeapYear= function () : string {

如何在全球范围内导入我的扩展程序?为什么我extensions.ts在其他项目中运行良好时会出现 TS2339 错误?

4

0 回答 0