我定义了以下的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呢?
答案 0 :(得分:2)
问题是因为lambda () => {}
被输入为(): void
,因为它没有返回任何内容,因此没有推断出[other]类型。
因此,给定f = () => {}
,表达式f()
也会输入为void
- 但clickCustomButton1 必须返回boolean
,因为它已声明
使用以下lambda进行比较,该lambda的类型为(): boolean
,现在是类型有效的:
newTopicTests = () => true
另一种看待此问题的方法是将原始代码编写为:
newTopicTests = (): boolean => {}
(这也将无法编译,但会将错误显示在更靠近源的位置。)
更新问题后..
要在接口中声明方法以不返回任何内容,请使用:
clickCustomButton1(): void;
要声明类型为(): void
的成员,请使用
clickCustomButton1: () => void;
另请注意,null
是,而void代表什么。