如何为函数定义Typescript接口?

时间:2014-09-26 10:10:35

标签: javascript typescript

我定义了以下的Typescript接口。 clickCustomButton1应该只返回,但我不知道如何指定。

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

我在我的代码中使用这个:

clickCustomButton1: null

然后:

newTopicTests = () => {
}

clickCustomButton1 = this.newTopicTests();

它给了我一个错误说:

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

有人可以告诉我我做错了什么吗?我认为我需要做的是指定clickCustomButton1以及newTopicTests不返回任何内容。但是我怎么能用Typescript呢?

1 个答案:

答案 0 :(得分:2)

问题是因为lambda () => {}被输入为(): void,因为它没有返回任何内容,因此没有推断出[other]类型。

因此,给定f = () => {},表达式f()也会输入为void - 但clickCustomButton1 必须返回boolean,因为它已声明

使用以下lambda进行比较,该lambda的类型为(): boolean,现在是类型有效的:

newTopicTests = () => true

另一种看待此问题的方法是将原始代码编写为:

newTopicTests = (): boolean => {}

(这也将无法编译,但会将错误显示在更靠近源的位置。)


更新问题后..

要在接口中声明方法以不返回任何内容,请使用:

clickCustomButton1(): void;

要声明类型为(): void成员,请使用

clickCustomButton1: () => void;

另请注意,null ,而void代表什么。