与客户类型一样
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
我正在研究打字稿中的 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