与客户类型一样

as any as customeType

我正在研究打字稿中的 latest angular code 并得出以下行:

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 将根据类型 ServiceWorkerGlobalScope 检查 self 的结构。如果它发现类型不兼容,您将收到如下错误:

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

先将self移入any类型,然后在any类型和ServiceWorkerGlobalScope类型之间进行校验。在这种情况下,any 与 "any" 其他类型兼容,并且没有警告。

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

x = <ServiceWorkerGlobalScope>y

但是类型断言仍然执行类型检查。如果你想 "opt out" 的类型检查,你使用 any 类型作为中介:

x = <ServiceWorkerGlobalScope><any>y