【发布时间】:2020-07-07 22:46:46
【问题描述】:
假设我有以下类型:
type SomeType = {
propOne: any;
propTwo: any;
propThree: any;
}
propOne 是必需的,propTwo 和 propThree 是可选的,但至少其中一个是必需的。如何定义具有该约束的类型?
// The following code is my expectation
let someVar1: SomeType = { propOne: 1, propTwo: "two" } //Okay
let someVar2: SomeType = { propOne: 1, propThree: "three" } //Okay
let someVar3: SomeType = { propOne: 1, propTwo: "two", propThree: "three" } //Okay
let someVar4: SomeType = { propOne: 1 } //Not Okay
【问题讨论】:
-
你用的是哪个TS版本?因为在最新的 3.8 中只有第三种情况是正确的(没有 TS 错误)
-
@MarekSzkudelski 这是 OP 的预期结果。
-
我会创建一个构造函数来强制执行这个“检查约束”,如果参数不符合预期会抛出异常。
-
@DaggeJ 依赖于这种类型作为一个类。但是,可以仅单独构造和使用它,而不涉及过程中的类。此外,构造函数将仅在构造时执行检查,如果实例被修改,则不会稍后。
标签: javascript typescript