Добавил создание ветки БЕЗ перехода
Вдобавок к прошлой функции сделал метку для случая, когда ветку нужно просто создать в фоне, оставаясь в текущей (
Что нового в
• Вывод подсказки с нужной командой для перехода на будущее.
Код функции:
Теперь в скрипте закрыты оба базовых сценария работы с ветками 💻
Вдобавок к прошлой функции сделал метку для случая, когда ветку нужно просто создать в фоне, оставаясь в текущей (
git branch).Что нового в
:create_branch_only: • Вывод подсказки с нужной командой для перехода на будущее.
Код функции:
:: Создание ветки (остаемся в текущей)
:create_branch_only
cls
echo === СОЗДАНИЕ ВЕТКИ (ОСТАЕМСЯ В ТЕКУЩЕЙ) ===
echo.
echo Вы хотите создать ветку и остаться в текущей? (Y/N)
choice /c YN /n /m "Ваш выбор: "
if errorLevel 2 goto menu
set branch_name=
set /p branch_name="Введите название новой ветки: "
if "%branch_name%"=="" (
echo [!] Название ветки не может быть пустым!
pause
goto menu
)
git branch "%branch_name%"
echo.
echo [!] Ветка "%branch_name%" успешно создана! Вы остались в текущей ветке.
echo Чтобы перейти на нее выполните: git switch "%branch_name%"
pause
goto menu
Теперь в скрипте закрыты оба базовых сценария работы с ветками 💻
🔥 Сегодня разобрал крутую фичу в TypeScript оператор satisfies (появился в TS 4.9).
Раньше была частая проблема: если задаёшь объекту строгий тип (например, Record), то TypeScript забывает, где у тебя строка, а где массив. Из-за этого нельзя было просто так вызвать .toUpperCase() у строки без лишних проверок.
Оператор satisfies решает это идеально:
1. Он ПРОВЕРЯЕТ, что объект соответствует типу.
2. Но НЕ СУЖАЕТ автовыведенные типы полей!
Теперь TS точно знает, что palette.green это именно string, и спокойно даёт крутить с ним любые строковые методы.
Код и примеры закинул в конспекты, двигаемся дальше 🚀
Раньше была частая проблема: если задаёшь объекту строгий тип (например, Record), то TypeScript забывает, где у тебя строка, а где массив. Из-за этого нельзя было просто так вызвать .toUpperCase() у строки без лишних проверок.
Оператор satisfies решает это идеально:
1. Он ПРОВЕРЯЕТ, что объект соответствует типу.
2. Но НЕ СУЖАЕТ автовыведенные типы полей!
type Colors = "red" | "green" | "blue"
type RGB = [red: number, green: number, blue: number]
const palette = {
red: [255, 0, 0],
green: "#00ff00",
blue: [0, 0, 255],
} satisfies Record<Colors, string | RGB>
const greenNormalized = palette.green.toUpperCase()
Теперь TS точно знает, что palette.green это именно string, и спокойно даёт крутить с ним любые строковые методы.
Код и примеры закинул в конспекты, двигаемся дальше 🚀