k0p*_*kus 14 typescript tslint
我升级了tslint,现在它抱怨:
ERROR: src/Metronome/JobFetcher.ts[13, 32]: Type assertion using the '<>' syntax is forbidden. Use the 'as' syntax instead.
Run Code Online (Sandbox Code Playgroud)
违规代码如下:
const jobs = <JobConfig[]> <any> await rp(fetchJobsOptions);
Run Code Online (Sandbox Code Playgroud)
什么是语法,我为什么要使用它?
k0p*_*kus 31
像这样重构您的代码:
const jobs = await rp(fetchJobsOptions) as JobConfig[];
Run Code Online (Sandbox Code Playgroud)
正如Basarat Ali Syed在TypeScript Deep Dive一书中所指出的那样,它描述了类型转换:
作为foo vs.
<foo>最初添加的语法是
<foo>.这在下面说明:Run Code Online (Sandbox Code Playgroud)var foo: any; var bar = <string> foo; // bar is now of type "string"然而,使用时语言语法存在歧义
Run Code Online (Sandbox Code Playgroud)<foo> style assertions in JSX: var foo = <string>bar; </string>因此,现在建议您只使用foo作为一致性.
键入断言与强制转换
它之所以不被称为"类型转换",是因为转换通常意味着某种运行时支持.但是,类型断言纯粹是一个编译时构造,也是一种为编译器提供有关如何分析代码的提示的方法.
小智 8
如果您想抑制错误,您也可以转到tslint.json并包含
...
"rules": {
"no-angle-bracket-type-assertion": false,
...
}
...
Run Code Online (Sandbox Code Playgroud)
只要你不介意所说的一致性。
| 归档时间: |
|
| 查看次数: |
9682 次 |
| 最近记录: |