TypeScript接口的语法

时间:2018-04-30 14:06:12

标签: typescript

我对TypeScript还是一个新手,我有以下语法让我感到困惑。

export interface FileDialogFactory {
    (props: FileDialogProps): FileDialog;
}

据我所知,这是一个以后可以被某个变量使用的接口。此接口内部是一个名为props的已定义变量名,其名称为FileDialogProps。我不明白的是结肠的含义":"和以下FileDialog。那么变量props应该是什么类型的?它是FileDialogProps还是FileDialog

2 个答案:

答案 0 :(得分:3)

这是一个包含函数签名的接口。采用类型FileDialogProps的参数并返回FileDialog的函数。所以这种类型的变量是可调用的:

let fact:FileDialogFactory;
let dialog = fact(props);

一个接口可以有多个函数签名,这些函数签名可以作为重载,其中任何一个都可以使用相同的规则来解析,typecript适用于函数重载解析:

export interface FileDialogFactory {
    (props: FileDialogProps): FileDialog;
    (props: FileDialogProps, isOpen: boolean): FileDialog;
}
let fact:FileDialogFactory;
let dialog = fact(props);
let dialog2 = fact(props, true); // also ok

答案 1 :(得分:1)

代码示例中的props接口包含 function 定义,其中有FileDialogProps类型的单个参数FileDialog,函数返回接口/类型{ Acceptable: ["application/json", "application/pdf"] } 的实例。