2014-09-26 73 views
2

我正在定義下面的Typescript接口。 clickCustomButton1應該不會返回任何內容,但我不知道如何指定。後來如何爲函數定義一個Typescript接口?

clickCustomButton1: null 

然後:

interface IButtonTemplate { 
    clickCustomButton1:(); // How can I say this should return nothing? 
    // more code here 
} 

我用這個在我的代碼是這樣

newTopicTests =() => { 
} 

clickCustomButton1 = this.newTopicTests(); 

它給了我一個錯誤說:

Error 2 Cannot convert 'void' to '() => boolean' 

能有人給我知道我做錯了什麼?我想我需要做的是指定clickCustomButton1以及newTopicTests不返回任何東西。但是我怎麼能用Typescript來做到這一點?

+0

user2864740 - 我很抱歉,但我不確定我的理解是什麼意思。我在我的問題中添加了一行,詢問是否有人可以告訴我如何做到這一點,並在分配給clickCustomButton1的任何內容符合不返回任何內容的條件時使其工作。 – 2014-09-26 10:14:25

回答

2

問題是因爲lambda () => {}鍵入爲(): void,因爲它不返回任何內容,因此沒有[other]類型推斷。

因此,鑑於f =() => {},表達f()也類型爲void - 但是因爲它是宣佈clickCustomButton1 必須返回boolean

newTopicTests =() => true 

另一種方式看這個問題寫的原代碼爲:

newTopicTests =(): boolean => {} 

使用下面的拉姆達,這是類型爲(): boolean,也就是現在的Type-有效時比較

(這也將無法編譯,但會顯示更接近其來源的錯誤。)


更新的問題後..

要在接口聲明方法返回什麼,使用:

clickCustomButton1(): void; 

要聲明成員其中有(): void的類型,使用

clickCustomButton1:() => void; 

還要注意的是null東西而void不代表什麼。

相關問題