"typeof" in members in TypeScript typings 的目的是什么?

What is the purpose of "typeof" in members in TypeScript typings?

Electron typescript 定义包含以下接口:

interface MainInterface extends CommonInterface {
  // I understand these
  app: App;
  autoUpdater: AutoUpdater;
  // But not these
  BrowserView: typeof BrowserView;
  BrowserWindow: typeof BrowserWindow;
  ClientRequest: typeof ClientRequest;
  ...
}

在这种情况下,typeof XX 是什么意思? AFAIK typeof returns 类型的字符串名称,例如以上相当于

BrowserView: "BrowserView";

如果是这样,那么使用typeof的成员定义的目的是什么?

如果在上面示例中的类型注释中,typeof 运算符给出值的类型。如果应用于变量,它会给出变量的类型。如果应用于 class 它给出 class 的类型(不是实例类型,而是表示 class 构造函数和静态方法的类型。

class Foo {
  static method(){}
}

let foo: typeof Foo;
foo.method();
new foo()

let o = 1
let oo: typeof o

在 Typescript 中,定义一个 class 会产生两个接口:

  1. class界面
  2. 实例接口

问题是,只有实例接口获取 class 的名称。为了访问 class 接口(做类似 new MyClass()MyClass.staticProperty 的事情),你必须使用 typeof.