Typescript中的扩展方法(Extension Method)
这个问题的起因:review公司项目的时候,发现很多如下的代码(mock)
先是一个工具类Util.ts
class NumberUtil {
static ToInt(num?: Number): number {
num = num || 0;
return Math.floor(num);
}
}
在需要使用的地方调用工具类
var intNumber = NumberUtil.ToInt(12.34);
这种方式当然可以应付业务,但总觉得low了点。我们做过C#的都知道有扩展方法一说,而JS有prototype可以扩展。 那么TypeScript是怎么支持的呢?
且看下面的步骤:
1:新建一个测试项目 create-react-app XXX --template typescript
2:在src -> @types下新建global.d.ts,内容如下(代码网上随便抄的)
declare global {
interface Number {
thousandsSeperator(): String;
}
}
export {};
3:src下新建extension.ts
Number.prototype.thousandsSeperator = function(): string {
return Number(this).toString().replace(/\B(?=(\d{3})+(?!\d))/g, ',');
}
export {};
4:最后在需要引用的代码中加入
import "../extension";
const num=111111;
console.log(num.thousandsSeperator() );
上述是一种比较麻烦的验证方式。 如果你用的是ts-node命令行,可以参考如下:
tsconfig.json中加入
"ts-node": {
"files": true
},
"files": [
"extension.ts",
"sample.ts",
"@types/global.d.ts"
],
如下图:
sample.ts
import "./extension";
const num=111111;
console.log(num.thousandsSeperator() );
如下图
最后执行ts-node sample.ts
· 全网最简单!3分钟用满血DeepSeek R1开发一款AI智能客服,零代码轻松接入微信、公众号、小程
· .NET 10 首个预览版发布,跨平台开发与性能全面提升
· 《HelloGitHub》第 107 期
· 从文本到图像:SSE 如何助力 AI 内容实时呈现?(Typescript篇)
· 全程使用 AI 从 0 到 1 写了个小工具
2021-01-17 React + Prettier + ESLint + Airbnb
2021-01-17 (一) 新建NextJS项目