相关疑难解决方法(0)

如何在Typescript中扩展String Prototype并使用它?

我正在使用一种新方法扩展String原型链,但是当我尝试使用它时,它会抛出一个错误:property 'padZero' does not exist on type 'string'.谁能为我解决这个问题?

代码如下.您还可以在Typescript Playground中看到相同的错误.

interface NumberConstructor {
    padZero(length: number);
}
interface StringConstructor {
    padZero(length: number): string;
}
String.padZero = (length: number) => {
    var s = this;
    while (s.length < length) {
      s = '0' + s;
    }
    return s;
};
Number.padZero = function (length) {
    return String(this).padZero(length);
}
Run Code Online (Sandbox Code Playgroud)

typescript

41
推荐指数
5
解决办法
3万
查看次数

如何使用全局增强在 TypeScript 1.8 中扩展原生 JavaScript 类型?

我正在尝试使用 TypeScript 1.8 中新的全局增强功能来扩展本机 JavaScript 类型,如此处所述。然而,当扩展函数返回相同类型时,我遇到了问题。

全局.ts

export {};
declare global {
    interface Date {
        Copy(): Date;
    }
}

if (!Date.prototype.Copy) {
    Date.prototype.Copy = function () {
        return new Date(this.valueOf());
    };
}
Run Code Online (Sandbox Code Playgroud)

日期助手.ts

export class DateHelper {
    public static CopyDate(date: Date): Date {
        return date.Copy();
    }
}
Run Code Online (Sandbox Code Playgroud)

我在尝试使用 DateHelper.ts 中定义的扩展时遇到以下错误 TS2322:

Type 'Date' is not assignable to type 'Date'.
Property 'toDateString' is missing in type 'Date'.
Run Code Online (Sandbox Code Playgroud)

有人知道如何解决这个问题吗?

typescript typescript1.8

4
推荐指数
1
解决办法
1625
查看次数

标签 统计

typescript ×2

typescript1.8 ×1