Как лучше сделать цепочку вызовов 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; } }

1 Мар 2022 в 19:54
164 +1
0
Ответы
1

Для скрытия методов 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 будут скрыты.

16 Апр 2024 в 19:14
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Гарантированные бесплатные доработки в течение 1 года
Быстрое выполнение от 2 часов
Проверка работы на плагиат
Поможем написать учебную работу
Прямой эфир