2016-11-26 126 views
0

交集類型的函數類型不像我預期的那樣運行。拿這個樣本:TypeScript交集類型的函數

var c: ((x: number) => void) = x => { }; 

這個編譯就好了。 x是拉姆達中的一個數字。

但這種失敗:

var c: ((x: number) => void) & ((x: number | string) => void) = x => { }; 

它說: 「X隱含有一個 '任意' 類型」。 (與--noExplicitAny編譯)

即使失敗與同一句話:

var c: ((x: number) => void) & ((x: number) => void) = x => { }; 

這意味着,並非所有類型的TT & T是一樣的T,這實在是不可思議。

回答

1

我不認爲類型交叉是爲了這樣使用。這可能是因爲編譯器只是未能計算x的類型並且由於編譯器選項而分配任何失敗的。

爲x本身定義多個類型,而不是加入兩個函數的類型也更加清楚。

var c: ((x: number | string) => void) = x => { }; 
相關問題