Как лучше сделать цепочку вызовов if-elseif-else со скрытием elseif-else по умолчанию? Так вроде бы работает, только по умолчанию надо скрыть методы elseif, else. может как то лучше можно сделать ?class BaseLol { #isNextIf = false; public if(condition: boolean) { if (condition) { this.#isNextIf = false; } else { this.#isNextIf = true; } return this as Omit; } public elseif(condition: boolean) { if (this.#isNextIf && condition) { this.#isNextIf = false; } return this; } public else() { if (this.#isNextIf) { this.#isNextIf = false; } return this as Omit; } }
Для скрытия методов elseif и else по умолчанию можно использовать интерфейс, который будет содержать только метод if. Вот пример, как это можно сделать:
type Chainable = { if(condition: boolean): Omit<this, "if" | "elseif" | "else">; } class BaseLol implements Chainable { #isNextIf = false; public if(condition: boolean) { if (condition) { this.#isNextIf = false; } else { this.#isNextIf = true; } return this as Omit<this, "if" | "elseif" | "else">; } public elseif(condition: boolean) { if (this.#isNextIf && condition) { this.#isNextIf = false; } return this; } public else() { if (this.#isNextIf) { this.#isNextIf = false; } return this as Omit<this, "if" | "elseif" | "else">; } }
Теперь только метод if будет доступен по умолчанию, а методы elseif и else будут скрыты.
Для скрытия методов elseif и else по умолчанию можно использовать интерфейс, который будет содержать только метод if. Вот пример, как это можно сделать:
type Chainable = {if(condition: boolean): Omit<this, "if" | "elseif" | "else">;
}
class BaseLol implements Chainable {
#isNextIf = false;
public if(condition: boolean) {
if (condition) {
this.#isNextIf = false;
} else {
this.#isNextIf = true;
}
return this as Omit<this, "if" | "elseif" | "else">;
}
public elseif(condition: boolean) {
if (this.#isNextIf && condition) {
this.#isNextIf = false;
}
return this;
}
public else() {
if (this.#isNextIf) {
this.#isNextIf = false;
}
return this as Omit<this, "if" | "elseif" | "else">;
}
}
Теперь только метод if будет доступен по умолчанию, а методы elseif и else будут скрыты.