Made a basic example to show what I'm trying to accomplish:
基本上给出了这两种类型:
type BaseType = FormGroup<{
user: FormControl<string>;
}>;
type SomeOtherType = FormGroup<{
user: FormControl<string>;
amount: FormControl<number>;
}>;
我希望能够将SomeOtherType
传递给类型为BaseType
的组件的输入,因为它们完成了合同.
正常情况下,try 执行此操作时,我似乎得到了一个向后错误:
Type 'SomeOtherType' is not assignable to type 'BaseType'.
Property 'amount' is missing in type '{ user: FormControl<string>; }' but required in type '{ user: FormControl<string>; amount: FormControl<number>; }'.
我可以通过使用输入转换来消除所有限制
@Input({ required: true, transform: (value: FormGroup): BaseType => value })
form!: BaseType;
但我不喜欢将任何表单组限制为与基类型匹配的对象时,如何才能传递它.
(帮助阻止任何关于为什么不用其他方式做这件事的问题.这是一个已经完成的产品的一部分,我正在try 将它从untyped个表单everywhere迁移到新键入的表单.对于非类型化表单,一切都运行得很好,依赖于表单控件子集的组件也没有问题,只是希望能够保留该功能,但同时使用新的键入功能.)