Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/url/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angular 与customeType一样_Angular_Typescript_Typescript Typings_Typescript2.0_Angular5 - Fatal编程技术网

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