2017-02-17 129 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的开头文件