2017-02-17 89 views
1

我想添加一些功能到number類型。所以,我想這個代碼:擴展打字稿號碼類型

interface Number 
{ 
    IsInRange(min: number, max: number):boolean; 
} 

Number.prototype.IsInRange = function(min: number, max: number): boolean 
{ 
    if ((this >= min) && (this <= max)) return true; 

    return false; 
} 

我把它放在extensions.ts文件中src/app/common(這是否正確呢?)

的問題是,我的代碼不能編譯。我得到了:

屬性'IsInRange'在類型'數字'上不存在。

但編輯器(Visual Studio Code)沒有抱怨。

我在做什麼錯?我猜想打字稿numberNumber界面不一樣。

+3

大體上延伸原型全局變量不是一個好主意。爲什麼不只是創建一個額外的參數調用的實用程序方法(目前是'this')呢? –

+0

我不明白你的意思。你能舉個例子嗎? – tBlabs

回答

0

只是有這樣的事情你的效用函數:

export function isInRange(n: number, min: number, max: number): boolean { 
    return n >= min && n <= max 
} 

然後使用它像

const inRange = isInRange(4, 2, 10); // instead of 4.isInRange(2, 10) 
+0

我知道我可以這樣做,但它看起來不太好。擴展類型的方法會更好。 – tBlabs

0

數接口應該是的.ts的開頭文件