2017-02-16 109 views
1

我創造我自己的擴展陣列如下:數組原型打字稿

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

回答

0

下面是檢查的東西...

  1. 是否含有擴展加載文件
  2. 無論它加載正確的順序(使用即前)

打開Web瀏覽器中的開發人員工具(通常爲F12)並選擇「網絡」選項卡。

Example Network Tab (Stack Overflow)

運行應用程序和審查的JavaScript文件加載。

您可以檢查包含Array擴展名的文件是否已加載 - 並且該文件是在依賴這些擴展名的文件之前加載的。