【问题标题】:extend AngularJs's angular global object in TypeScript在 TypeScript 中扩展 AngularJs 的角度全局对象
【发布时间】:2020-04-26 19:03:35
【问题描述】:

我将我的 typescript 版本升级到 3.8.3

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

我有一个使用 2 个函数扩展 angular global object 的旧代码。

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

升级 typescript 版本后,我收到此错误消息:

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

我知道我需要为 angular 对象创建一个扩展接口,但我正在苦苦挣扎,我尝试的一切都没有成功。

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

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

我错过了什么?

【问题讨论】:

  • 角度全局扩展如何/在哪里?这可以或多或少地完成,但我已经做了很多迁移工作,我真的建议不要这样做,而只是编写一个实用程序函数文件并将这些函数导入到需要它们的地方。现在撕掉创可贴...... typescript 现在甚至有一些有用的运算符,特别是 ?? 运算符

标签: javascript angularjs typescript typing


【解决方案1】:

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

import angular from 'angular';

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

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

【讨论】:

    猜你喜欢
    • 2016-05-06
    • 2014-10-06
    • 2020-04-17
    • 2021-05-06
    • 2020-05-15
    • 1970-01-01
    • 2014-03-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多