代码之家  ›  专栏  ›  技术社区  ›  MHOOS

任何自定义类型

  •  3
  • MHOOS  · 技术社区  · 8 年前

    我在研究 latest angular code 它在typescript中,位于以下行:

    const scope = self as any as ServiceWorkerGlobalScope;
    

    关于上述内容,我不理解的是:如果类型self是任何类型,为什么要将其转换为ServiceWorkerGlobalScope?为什么不将其声明为ServiceWorkerGlobalScope,如下所示:

    const scope = self as ServiceWorkerGlobalScope;
    

    const scope : ServiceWorkerGlobalScope = self;
    

    那条线是什么意思?这是否意味着作用域是最像ServiceWorkerGlobalScope类型的任何类型?

    1 回复  |  直到 8 年前
        1
  •  2
  •   Fenton    8 年前

    如果使用简化的:

    const scope : ServiceWorkerGlobalScope = self;
    

    TypeScript将检查 self 与类型相反 ServiceWorkerGlobalScope . 如果发现类型不兼容,您将收到以下错误:

    类型“Window”无法转换为类型“ServiceWorkerGlobalScope”。 属性“…”类型“Window”中缺少。

    通过移动 自己 进入 any 首先键入,然后在 任何 类型和 ServiceWorkerGlobal示波器 类型在这种情况下, 任何 与“任何”其他类型兼容,并且没有警告。

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

    x = <ServiceWorkerGlobalScope>y
    

    但是类型断言仍然执行类型检查。如果要“退出”类型检查,请使用 任何 键入作为中介:

    x = <ServiceWorkerGlobalScope><any>y
    
    推荐文章