0

Типизация массива пар ключ-значение в TypeScript

13

Я запутался относительно следующего объявления:

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

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

1 ответ(ов)

0

Да, как вы и предположили, это объект 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>;
Чтобы ответить на вопрос, пожалуйста, войдите или зарегистрируйтесь