Типизация массива пар ключ-значение в TypeScript
Я запутался относительно следующего объявления:
constructor(controls: {[key: string]: AbstractControl}, optionals?: {[key: string]: boolean}, validator?: ValidatorFn, asyncValidator?: AsyncValidatorFn)
Какой тип у параметра controls
(первый параметр)? Это объект, представляющий собой массив пар ключ-значение, где ключ — это строка, а значение — это объект типа AbstractControl
? Заранее спасибо!
1 ответ(ов)
Да, как вы и предположили, это объект JavaScript с ключами типа строка и значениями типа 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>;
Как удалить элемент массива в TypeScript?
Как проверить, содержит ли массив строку в TypeScript?
Поиск объекта в массиве объектов JavaScript с совпадающим значением
Как объявить массив в одну строку?
@Directive против @Component в Angular