angular - 与客户类型一样

标签 angular typescript typescript-typings typescript2.0 angular5

我正在研究 latest angular code这是 typescript 并来到以下行:

const scope = self as any as ServiceWorkerGlobalScope;

上面我不明白的是:如果类型 self 是 any 为什么要将它转换为 ServiceWorkerGlobalScope?为什么不像下面这样将它声明为 ServiceWorkerGlobalScope:

const scope = self as ServiceWorkerGlobalScope;

const scope : ServiceWorkerGlobalScope = self;

那一行是什么意思?这是否意味着范围是最喜欢类型 ServiceWorkerGlobalScope 的任何类型?

最佳答案

如果你使用简化的:

const scope : ServiceWorkerGlobalScope = self;

TypeScript 将检查 self 的结构针对类型 ServiceWorkerGlobalScope .如果它发现类型不兼容,您将收到如下错误:

Type 'Window' cannot be converted to type 'ServiceWorkerGlobalScope'. Property '...' is missing in type 'Window'.

通过移动 self进入any首先键入,然后在 any 之间执行检查类型和 ServiceWorkerGlobalScope类型。在这种情况下,any与“任何”其他类型兼容,并且没有警告。

这与应用于类型断言的流程相同,您可以尝试类型断言:

x = <ServiceWorkerGlobalScope>y

但是类型断言仍然执行类型检查。如果你想“选择退出”类型检查,你可以使用 any输入中介:

x = <ServiceWorkerGlobalScope><any>y

关于angular - 与客户类型一样,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47410483/

相关文章:

css - 如何在 Angular 2 中更改应用程序范围的 css?

javascript - Angular/ typescript : arrays in typescript changing when an independent element got changed

angular - 数据未显示。 ng-reflect-ng-for-off :null?

angular - 以 react 形式创建表单控制组

angular - 在 Angular 2 项目中导入和使用带有 Typescript 2 的无类型传单 JS 插件

typescript - 如何在 typescript 中将类型添加到 `...args`

javascript - 根据首字母匹配搜索或过滤数据

javascript - 具有正确签名的通用函数

typescript - key "Unit Of Measure"未按字母顺序排序

typescript 3.x : Access properties of type unknown