数组原型打字稿

数组原型打字稿

问题描述:

我创造我自己的扩展阵列如下:数组原型打字稿

export interface Func<T, TResult> { 
    (item: T): TResult; 
} 

declare global { 
    interface Array<T> { 
     where(predicate: Func<T, boolean>): Array<T>; 
     single(predicate: Func<T, boolean>): T; 
     first(predicate: Func<T, boolean>): T; 
     take(predicate: Func<T, boolean>, count: number): Array<T>; 
     countWhere(predicate: Func<T, boolean>): number; 
     count(): number; 
    } 
} 

Array.prototype.count = function <T>(): number { 
    return this.length; 
} 

//others 

在我的任何组件的智能感知的显示我这些方法作为扩展,但在调试时我得到了一个未定义例如:

events: Event[]; 
var result = this.events.count(); 

我应该在哪里实现Array方法,以便它们可以从任何组件中看到?

+0

相关:http://stackoverflow.com/a/14034242/215552 –

+0

你是否已经加载了在调试项目中实际创建这些方法的模块? – Bergi

+0

它在不同的.ts文件中我已经在使用的组件中导出该文件 – miechooy

下面是检查的东西...

  1. 是否含有扩展加载文件
  2. 无论它加载正确的顺序(使用即前)

打开Web浏览器中的开发人员工具(通常为F12)并选择“网络”选项卡。

Example Network Tab (Stack Overflow)

运行应用程序和审查的JavaScript文件加载。

您可以检查包含Array扩展名的文件是否已加载 - 并且该文件是在依赖这些扩展名的文件之前加载的。