interface ModelOptions {
value: [number, number] | number
range: boolean
}
interface ModelOptionRange {
value: [ number, number ];
range: true;
}
interface ModelOptionValue {
value: number;
range: false;
}
type ModelOption = ModelOptionRange | ModelOptionValue;
function check(v: number, cond: ModelOption): boolean {
if (cond.range) {
// тут cond точно типа ModelOptionRange
const [ min, max ] = cond.value;
return (min <= v && v <= max);
} else {
// а тут ModelOptionValue
return v === cond.value;
}
}