Dr.*_*ABT 6 extension-methods typescript
我读到可以向 TypeScript 中的类型添加扩展方法,但是将其应用于内置类型 Number 时遇到一些麻烦。
这是一些代码:
文件 A:NumberExtensions.ts
// tslint:disable-next-line:class-name interface-name
export interface Number {
isBigNumber(value: number): boolean;
}
// @ts-ignore
Number.prototype.isBigNumber = (value: number) => {
return value > 100000;
};
Run Code Online (Sandbox Code Playgroud)
文件B:使用上述内容
import { Number } from "./NumberExtensions";
foo() {
const aBigNumber: number = 1000000000;
// Errors here TS2339: Property 'isBigNumber' does not exist on type 'number'.
if (aBigNumber.isBigNumber()) {
console.log("It's a big number!");
}
}
Run Code Online (Sandbox Code Playgroud)
我对 TypeScript 扩展方法的声明和使用是否正确?
由于您在作为模块的文件中定义了增强,因此您需要在以下文件中添加增强声明declare global:
export { }
declare global {
export interface Number {
isBigNumber(): boolean;
}
}
Number.prototype.isBigNumber = function (this: number) {
return this > 100000;
};
function foo() {
const aBigNumber: number = 1000000000;
// Errors here TS2339: Property 'isBigNumber' does not exist on type 'number'.
if (aBigNumber.isBigNumber()) {
console.log("It's a big number!");
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7595 次 |
| 最近记录: |