2017-05-26 52 views
0

我升級tslint,現在抱怨:tslint指出的「as語法」是什麼?

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); 

什麼是語法,雖然和我爲什麼要使用它呢?

回答

2

重構代碼是這樣的:

const jobs = await rp(fetchJobsOptions) as JobConfig[]; 

正如TypeScript Deep Dive book by Basarat Ali Syed指出,它說,關於類型轉換:

爲富與<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> 

因此現在建議你一樣foo的使用 一致性時是在語言的語法歧義。

類型斷言和投放

它之所以不叫「類型轉換」是鑄造 通常意味着某種運行時支持。然而,類型 斷言純粹是編譯時構造,並且您可以通過這種方式向編譯器提供有關如何分析代碼的提示。