我升级了 tslint,现在它抱怨:
ERROR: src/Metronome/JobFetcher.ts[13, 32]: Type assertion using the '<>' syntax is forbidden. Use the 'as' syntax instead.
有问题的代码如下所示:
const jobs = <JobConfig[]> <any> await rp(fetchJobsOptions);
as 语法是什么?为什么要使用它?
像这样重构你的代码:
const jobs = await rp(fetchJobsOptions) as JobConfig[];
正如中指出的Basarat Ali Syed 所著的《TypeScript Deep Dive》一书 https://basarat.gitbook.io/typescript/type-system/type-assertion#as-foo-vs.-less-than-foo-greater-than,它说的是类型转换:
作为 foo 与<foo>
最初添加的语法是<foo>
。这被证明
以下:
var foo: any;
var bar = <string> foo; // bar is now of type "string"
然而,在使用时,语言语法存在歧义
<foo> style assertions in JSX:
var foo = <string>bar;
</string>
因此现在建议您只使用 as foo for
一致性。
类型断言与类型转换
之所以不称为“类型转换”,是因为类型转换
通常意味着某种运行时支持。然而类型
断言纯粹是一个编译时构造,也是您的一种方法
向编译器提供有关您希望代码如何显示的提示
分析了。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)