typescript - TypeScript 接口的语法
问题描述
我对 TypeScript 还是很陌生,下面的语法让我有点困惑。
export interface FileDialogFactory {
(props: FileDialogProps): FileDialog;
}
据我了解,这是一个以后可以被某些变量使用的接口。在这个接口内部是一个名为 props 的已定义变量名,其类型为 FileDialogProps。我不明白的是冒号“:”和以下内容的含义FileDialog
。那么变量props
应该是什么类型呢?是FileDialogProps
吗FileDialog
?
解决方案
那是一个包含函数签名的接口。一个函数,它接受一个类型的参数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
推荐阅读
- arrays - How can I iterate over an array of objects which belong to a key value - Flutter
- android - Android Gradle Plugin: Property 'applicationId' is not annotated with an input or output annotation
- docker - Dockerfile:在另一个 ENV 中引用先前定义的 ENV
- rust - Why is an empty tuple returned instead of a mutable string slice with a lifetime annotation when using `insert_str`?
- api - Chrome API - detect tab with user input
- angular - how to handle view child static error in angular 8
- android - 受限 API 没有响应
- octave - Octave 'wavread' 未定义
- android - ML Kit Firebase 翻译文本 null Kotlin Android
- python - Python:ValueError:无法将字符串转换为浮点数:读取输入文件以应用随机森林时“隔离”