TypeScript类型化成员中“ typeof”的目的是什么?

时间:2019-06-16 11:42:00

标签: typescript electron typescript-typings .d.ts

电子打字稿定义包含以下接口:

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返回类型的字符串名称,例如以上等同于

BrowserView: "BrowserView";

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

2 个答案:

答案 0 :(得分:1)

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

class Foo {
  static method(){}
}

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

let o = 1
let oo: typeof o

答案 1 :(得分:1)

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

  1. 类接口
  2. 实例接口

麻烦的是,只有实例接口才能获得类的名称。为了访问类接口(执行诸如new MyClass()MyClass.staticProperty之类的操作,您必须使用typeof