小编典典

如何在 TypeScript 接口中定义静态属性

all

我只想 在打字稿 界面中声明一个静态属性?我还没有找到任何关于这个的地方。

interface myInterface {
  static Name:string;
}

可能吗?


阅读 76

收藏
2022-07-09

共1个答案

小编典典

你不能在 TypeScript 的接口上定义静态属性。

假设您想更改Date对象,而不是尝试添加到 的定义中Date,您可以将其包装起来,或者简单地创建丰富的日期类来完成不做的事情Date

class RichDate {
    public static MinValue = new Date();
}

因为 Date 是 TypeScript 中的一个接口,所以不能使用extends关键字通过类扩展它,这有点遗憾,因为如果 date
是一个类,这将是一个很好的解决方案。

如果您想扩展 Date 对象以提供MinValue原型上的属性,您可以:

interface Date {
    MinValue: Date;
}

Date.prototype.MinValue = new Date(0);

调用使用:

var x = new Date();
console.log(x.MinValue);

如果你想让它在没有实例的情况下可用,你也可以......但它有点挑剔。

interface DateStatic extends Date {
    MinValue: Date;
}

Date['MinValue'] = new Date(0);

调用使用:

var x: DateStatic = <any>Date; // We aren't using an instance
console.log(x.MinValue);
2022-07-09