Синтаксис для интерфейсов TypeScript - PullRequest
0 голосов
/ 30 апреля 2018

Я все еще довольно новичок в TypeScript, и у меня есть следующий синтаксис, который меня немного смущает.

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

Насколько я понимаю, это интерфейс, который впоследствии может быть использован какой-то переменной. Внутри этого интерфейса определенное имя переменной с именем props имеет тип FileDialogProps. Что я не понимаю, так это значение двоеточия ":" и следующее FileDialog. Так какого типа должна быть переменная props? Это FileDialogProps или FileDialog?

Ответы [ 2 ]

0 голосов
/ 30 апреля 2018

Интерфейс FileDialogFactory, который вы имеете в примере кода, содержит определение функции , в котором есть единственный параметр props типа FileDialogProps и функция возвращает экземпляр интерфейса / типа FileDialog.

0 голосов
/ 30 апреля 2018

Это интерфейс, который содержит сигнатуру функции. Функция, которая принимает аргумент типа FileDialogProps и возвращает FileDialog. Таким образом, переменная этого типа будет вызываться:

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

Интерфейс может иметь несколько сигнатур функций, они будут действовать как перегрузки, и любая из них будет вызываться с использованием тех же правил, которые применяются для разрешения перегрузки функции:

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...