web-dev-qa-db-ja.com

キー値ペア宣言のタイプスクリプト配列

次の宣言について混乱しています:

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

コントロールのタイプは何ですか(最初のパラメーター)?キーが文字列で値がAbstractControlであるキー値ペアの配列であるオブジェクトですか?ありがとう!

25
mishap

はい、ご想像のとおり、キーとして文字列を持ち、値としてAbstractControlを持つjsオブジェクトです。
例えば:

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

編集

次の2つの方法で、このタイプの変数を宣言できます。

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>;
45
Nitzan Tomer