Подтвердить что ты не робот

Typescript массив идентификаторов пар значений ключа

Смущает следующее объявление:

constructor(controls: {[key: string]: AbstractControl}, optionals?: {[key: string]: boolean}, validator?: ValidatorFn, asyncValidator?: AsyncValidatorFn)

Каков тип элементов управления (первый параметр)? Является ли это объектом, который представляет собой массив пар ключей, где ключ является строкой, а значение - AbstractControl? Спасибо!

4b9b3361

Ответ 1

Да, как вы уже догадались, это объект js с ключом как строка и AbstractControl как значения.
Например:

{
    "control1": new Control(),
    "control2": new Control()
}

Изменить

Вы можете объявить переменную такого типа двумя способами:

let controls: { [key: string]: AbstractControl };

или

interface ControlsMap {
    [key: string]: AbstractControl;
}

let controls: ControlsMap;

или даже лучше:

interface ControlsMap<T extends AbstractControl> {
    [key: string]: T;
}

let controls1: ControlsMap<AbstractControl>;
let controls2: ControlsMap<MyControl>;