首页 > 解决方案 > TypeScript 接口的语法

问题描述

我对 TypeScript 还是很陌生,下面的语法让我有点困惑。

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

据我了解,这是一个以后可以被某些变量使用的接口。在这个接口内部是一个名为 props 的已定义变量名,其类型为 FileDialogProps。我不明白的是冒号“:”和以下内容的含义FileDialog。那么变量props应该是什么类型呢?是FileDialogPropsFileDialog

标签: typescript

解决方案


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

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

一个接口可以有多个函数签名,它们将充当重载,并且它们中的任何一个都可以按照 typescript 应用于函数重载解析的相同规则进行调用:

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

推荐阅读