在typescript中扩展angular全局对象
extending angular global object in typescript
我正在使用Angularjs和Typescript,我想用一个自定义函数来扩展angular对象,像这样:
angular.executeAfterDigest(function(){...});
我该怎么做呢?我怀疑我需要扩展IAngularStatic,或者我可以使用angular.prototype之类的东西吗?(我不是很有经验的扩展javascript对象开始)。
通过添加到接口来告诉typescript: https://github.com/borisyankov/DefinitelyTyped/blob/master/angularjs/angular.d.ts#L9
declare module ng {
interface IAngularStatic {
executeAfterDigest:Function;
}
}
<标题> 更新我不希望改变angular. d.s,因为它是一个第三方组件
你不会把它放在angular.d.ts
中。您可以将其放在globals.d.ts
(或vendor.d.ts
)中,以记录您如何自定义项目中使用的供应商库(这里是angular)。
记住:接口是开放的。
标题>更新当前状态:
basarat的答案没有为我工作,它打破了IAngularStatic类型在我的应用程序中,但将它添加到我的global. d.s中修复了自定义角扩展函数的问题:
declare namespace angular {
interface IAngularStatic {
copyData:Function;
}
}
我从basarat链接的明确类型结构中导出了declare module ng
到declare namespace angular
的变化:https://github.com/borisyankov/DefinitelyTyped/blob/master/angularjs/angular.d.ts L9
因为angular是一个单例实例,所以你可以这样做:
angular.executeAfterDigest = function(fn) {
setTimeout(fn,0);
}
调用它时,不能保证它在摘要之后执行。您必须确保只有当$scope.$$phase
是$digest
或$apply
时才调用它。基本上,它只会在你的角度世界中起作用。
- 全局变量和全局对象的属性之间有什么区别吗
- javascript无法重新定义函数内部的全局对象
- Javascript,从静态函数中打印全局对象
- 为什么“this”指的是全局对象
- Do let语句在全局对象上创建属性
- underscore.js,名为“”的全局对象;出口;和livefyre javascript API-集成冲突
- 为什么“this”指的是对象“obj”而不是全局对象
- 从函数调用全局对象的方法
- 谷歌分析的全局对象
- AngularJS:避免使用“angular”全局对象
- Javascript Web Worker 修改全局对象
- 想要在回调中更新对象,给出正确的日志,但全局对象未更新
- 让函数中的接收器默认为全局对象背后的基本原理是什么?
- 蜘蛛猴:如何删除全局对象
- 为什么函数在全局对象中不可用
- 访问请求会在全局对象中生成
- 全局对象问题
- React Native 中全局对象的模式
- Expressjs - 全局对象
- 是否可以在 Javascript 中更改或删除全局对象的属性