TypeScript 中数字的扩展方法
Extension method on number in 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;
};
文件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!");
}
}
我对 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!");
}
}
我读到可以
这是一些代码:
文件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;
};
文件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!");
}
}
我对 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!");
}
}