在TypeScript中通过大括号声明方法

时间:2018-05-09 10:41:57

标签: typescript

如何以这种方式读取方法声明(或编译器如何读取它):

add: {(id: number): void}

这就像为type方法创建add一样吗?这很奇怪,因为add这样的内容是带有一个函数的对象。

上下文

interface ComponentProps {
  add: {(id: number): void};
}

然后当一些React组件实现这个时,我会写:

<Component add={(item) => {console.log(`Added item ${item}`);} } />

1 个答案:

答案 0 :(得分:1)

add是一个函数字段。我们通常在打字稿中编写函数签名类型的方式是(id: number) => void,但这是{ (id: number): void }的简短形式。这两个语法是等效的,都定义了一个具有可调用签名的类型。这种更详细的语法具有允许更多签名的优点:

interface ComponentProps {
  add: {
     (id: number): void
     (id: string, otherParam: number): void
  };
}