提问人:Random Dev 提问时间:10/20/2023 最后编辑:Random Dev 更新时间:10/20/2023 访问量:23
在类型级别验证输入组合 - Angular
Verify combination of inputs at type level - Angular
问:
我有一个接受两个输入的角度组件;InputA 和 InputB。
- InputA 只能具有以下值之一:A1、A2、A3。
- InputB 只能具有以下值之一:B1、B2、B3、B4。
问题是,从业务角度来看,并非所有 InputA 值都可以与所有 InputB 值一起使用。 例如:
- A1 只能与 B1 和 B4 一起使用。
- A2 只能与 B1、B2 和 B3 一起使用。
- A3 只能与 B1 一起使用。
如何执行类型级别检查,以确保使用我的组件的开发人员没有使用不存在的组合,例如示例 A1 和 B2。
当使用我的组件的开发人员编写如下内容时,我想在 IDE 中显示错误:<my-component inputA=A1 inputB=B1></my-component>
编写此类行不会引发类型级错误,因为 A1 是 InputA 的有效值,而 B2 是 InputB 的有效值。但这种组合并不好。
我已经实现了一个抛出运行时错误的方法,但在编译和执行之前,最好在 IDE 中出现错误。
答:
0赞
Sergey Barabanov
10/20/2023
#1
如果您需要简单的答案:
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 个输入 => mby,您将遇到同步问题(可以在 inputA 之前设置 inputB)。
评论