我对TypeScript还是一个新手,我有以下语法让我感到困惑。
export interface FileDialogFactory {
(props: FileDialogProps): FileDialog;
}
据我所知,这是一个以后可以被某个变量使用的接口。此接口内部是一个名为props的已定义变量名,其名称为FileDialogProps。我不明白的是结肠的含义":"和以下FileDialog
。那么变量props
应该是什么类型的?它是FileDialogProps
还是FileDialog
?
答案 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"] }
的实例。