Typescript使用根类型的嵌套keyof

时间:2020-06-01 07:01:25

标签: typescript

我想用类型包装现有的Angular API。我有一个FormControl和一个FormGroup现在都接受一个泛型:

export interface AbstractControl<T> extends _AbstractControl {
  value: T;
}

export class FormControl<T> extends _FormControl {
  constructor(formState?: T, validatorOrOpts?: any, asyncValidator?: any) {
    super(formState, validatorOrOpts, asyncValidator);
  }
}

export class FormGroup<T> extends _FormGroup {
  constructor(
    public controls: { [K in keyof T]: AbstractControl<T[K]> },
    validatorOrOpts?: any,
    asyncValidator?: any
  ) {
    super(controls, validatorOrOpts, asyncValidator);
  }
}

问题在于,当我使用嵌套的FormGroup时,会将其视为自己的单独实体:

type P = {
  a: string;
  b: {
    c: string;
  };
};

const group = new FormGroup<P>({
  a: new FormControl(""),
  b: new FormGroup({
    // I expect this object type to be P['b']
  })
});

我如何使其工作?

这是一个实时示例:https://stackblitz.com/edit/angular-ivy-gihck4?file=src%2Fapp%2Ftest.ts

0 个答案:

没有答案