使用 typeof 定义类型

Using typeof to define a type

我不认识显示的 TypeScript 语法 here:

export var __platform_browser_private__: {
  _DomAdapter?: typeof dom_adapter.DomAdapter; DomAdapter: typeof dom_adapter.DomAdapter;
  _BrowserDomAdapter?: typeof browserDomAdapter.BrowserDomAdapter;
  BrowserDomAdapter: typeof browserDomAdapter.BrowserDomAdapter;
  getDOM: typeof dom_adapter.getDOM;
  // ... shortened 
} = {
  DomAdapter: dom_adapter.DomAdapter,
  BrowserDomAdapter: browserDomAdapter.BrowserDomAdapter,
  getDOM: dom_adapter.getDOM,
  // ... shortened 
};

通常我只在 JS 的 if 语句中使用 typeof 但我从未见过在 TypeScript 中使用 typeof 来定义类型。

这确实是一种在 TypeScript 中定义类型的方法吗?如果是这样,这只是另一种设置类型的方法吗?这种语法在 TypeScript 中是惯用的吗,有文档吗? Angular 应该有更好的方法吗?为什么要这样呢?

当使用 typeof 分配类型时,该类型成为构造函数。构造函数是用于创建和初始化对象的特殊函数。

let ctor: typeof String;
ctor = String; // Works
ctor = "Some string"; // Error

let s: string;
s = "Some string"; // Works

上面的错误是Type '"Some string"' is not assignable to type 'StringConstructor'.

另请参阅: