使用typeof定义类型

时间:2017-08-22 17:01:57

标签: angular typescript static-typing

我无法识别here所示的TypeScript语法:

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应该有更好的方法吗?为什么这种方式超过另一个?

1 个答案:

答案 0 :(得分:2)

使用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'.

另见: