Angular 与customeType一样
我正在研究打字脚本中的内容,并得出以下结论:Angular 与customeType一样,angular,typescript,typescript-typings,typescript2.0,angular5,Angular,Typescript,Typescript Typings,Typescript2.0,Angular5,我正在研究打字脚本中的内容,并得出以下结论: const scope = self as any as ServiceWorkerGlobalScope; 关于上述内容,我不了解的是:如果类型self是any,为什么要将其转换为ServiceWorkerGlobalScope?为什么不将其声明为ServiceWorkerGlobalScope,如下所示: const scope = self as ServiceWorkerGlobalScope; 或 那条线是什么意思?这是否意味着作用域是
const scope = self as any as ServiceWorkerGlobalScope;
关于上述内容,我不了解的是:如果类型self是any,为什么要将其转换为ServiceWorkerGlobalScope?为什么不将其声明为ServiceWorkerGlobalScope,如下所示:
const scope = self as ServiceWorkerGlobalScope;
或
那条线是什么意思?这是否意味着作用域是最像ServiceWorkerGlobalScope类型的任何类型?如果使用简化的:
const scope : ServiceWorkerGlobalScope = self;
TypeScript将对照类型ServiceWorkerGlobalScope
检查self
的结构。如果发现类型不兼容,您将收到以下错误:
无法将类型“Window”转换为类型“ServiceWorkerGlobalScope”。
类型“Window”中缺少属性“…”
首先将self
移动到any
类型,然后在any
类型和serviceworglobalscope
类型之间执行检查。在这种情况下,any
与“any”其他类型兼容,并且没有警告
这与应用于类型断言的流程相同,您可以尝试类型断言:
x = <ServiceWorkerGlobalScope>y
这是因为
self
的类型肯定与ServiceWorkerGlobalScope
的“形式”不同。因此,他们使用any
创建一个“无格式”对象,然后使用serviceworglobalscope
。
x = <ServiceWorkerGlobalScope>y
x = <ServiceWorkerGlobalScope><any>y