首页 > 解决方案 > 在 TypeScript 中扩展 AngularJs 的角度全局对象

问题描述

我将我的打字稿版本升级到 3.8.3

我的项目是用 AngularJS 编写的,包含.js.ts文件。

我有一个遗留代码,它扩展了angular global object2 个函数。

angular.isUndefinedOrNull = function (val) {
    ...
};
angular.isDefinedAndNotNull = function (val) {
    ...
}

升级打字稿版本后,我收到此错误消息:

Property 'isDefinedAndNotNull' does not exist on type 'IAngularStatic'

我知道我需要为angular对象创建一个扩展接口,但我正在努力解决如何,我尝试的一切都没有成功。

尝试global.d.ts使用以下内容将文件添加到根目录:

declare namespace angular {
    interface IAngularStatic {
        isUndefinedOrNull: (any) => boolean;
        isDefinedAndNotNull: (any) => boolean;
    }
}

我错过了什么?

标签: javascriptangularjstypescripttyping

解决方案


你离它很近,但它是这样的:

import angular from 'angular';

declare module angular {
    interface IAngularStatic {
        isUndefinedOrNull: (any) => boolean;
        isDefinedAndNotNull: (any) => boolean;
    }
}

但是,我不推荐这种方法,而是建议重构以在需要时使用简单的导入函数,并使用新的打字稿功能,如空合并运算符??


推荐阅读