typescript 验证类型级别的输入组合-Angular

tvz2xvvm  于 2023-10-22  发布在  TypeScript
关注(0)|答案(1)|浏览(143)

我有一个角分量,它有两个输入输入A和输入B。

  • InputA只能有以下值之一:A1 A2 A3
  • InputB只能有以下值之一:B1 B2 B3 B4

问题是,从商业Angular 来看,并非所有的InputA值都可以与所有的InputB值匹配。例如:

  • A1只能与B1和B4一起使用。
  • A2只能与B1,B2和B3一起使用。
  • A3只能与B1一起使用。

我如何执行类型级别检查,以确保使用我的组件的开发人员没有使用不存在的组合,例如A1与B2的组合。我想在IDE中显示一个错误,当dev使用我的组件编写类似于以下内容时:<my-component inputA=A1 inputB=B1></my-component>
写入这样的行不会引发类型级别错误,因为A1是InputA的有效值,B2是InputB的有效值。但组合并不好。
我已经实现了一个抛出运行时错误的方法,但是在编译和执行之前在IDE中有错误会更好。

t98cgbkg

t98cgbkg1#

如果你需要简单的答案:

interface Case1 {
    value1: A1;
    value2: B1 | B4;
}

interface Case2 {
    value1: A2;
    value2: B1 | B2 | B3;
}

interface Case3 {
    value1: A3;
    value2: B1;
}

type InputType = Case1 | Case2 | Case3;

class Component {
    @Input() inputVar: InputType;
}

您可以将输入实现为“set:函数,例如:@Input()设置inputB(value){...}并在那里检查,但是如果你使用2个inputs => mby,你会遇到同步问题(inputB可以在inputA之前设置)。

相关问题