Берлога программиста | Веб и не только
Закрытый канал
Пригласить друга: https://t.me/+T3oGjyHRTAsxNWEy
Больше5 000
Подписчики
Нет данных24 часа
-167 дней
-13830 день
Архив постов
ИИ-Адвент: 14-дневный бот для быстрых навыков работы с нейросетями ☃️🎄
Для тех, кто хотел разобраться с ИИ в 2025, но не нашёл времени, появился упрощённый формат обучения.
Что это:
Бесплатный телеграм-бот на 14 дней @neuro_advent_bot
Каждый день открывается «окно»:
— мини-урок (3–5 минут)
— инструмент
— практическое задание
Формат рассчитан на пользователей без глубокого опыта: задания короткие, сразу применимые в рабочих задачах.
Что даёт @neuro_advent_bot
За 2 недели:
— базовые навыки промптинга
— собственный набор ИИ-инструментов
— ускорение текстов, идей, визуализации и офисной рутины
— понимание актуальных апдейтов отрасли
Если в течение года не удалось войти в тему — это последний удобный момент перед 2026.
👉 Открыть первое окошко: @neuro_advent_bot
А че в комментах тишина? Как собираетесь-то тайпскрипт учить?
Так-с, а теперь для тех кто реально хочет разиваться задачка практическая: в комменты напишите функцию (без реализации) со всеми типами которая получает на вход идентификтор пользователя, транзакцию (например оплата подписки), а на выходе объект пользователя (детальный - имя / фамилия / дата создания / роли) который содержит поле истечения подписки либо ошибку
Кстати знаете что такое Rest и Spread (которые как три точки выглядят) в JS?
TypeScript - введение (Часть 5 - функции)
Часть 4 - тут [ссылка]
Не будем мотать сопли на кулак, вот сразу примерчик:
function sum(a: number, b: number): number {
return a + b;
sum("5", 10);
// ❌ Первый аргумент должен быть number
sum(5, 10, 15);
// ❌ Лишний аргумент
}
Вся наука очень простая: после каждого аргумента идет тип, после круглых скобок тип возврата, но с ним интереснее - его писать не обязательно поскольку TS сам поймет что возвращается, это скорее нужно для самопроверки когда Вы пишете возвращаемый тип и чтобы не ошибиться в теле функции, типо такого
function sum(a: number, b: number): number {
if (a + b > 0) retutn "0";
return a + b;
}
Вот за такой финт ушами TS даст Вам по рукам, НО если не типизировать возврат - все будет ок, поэтому его лучше прописывать чтобы случайно не допустить ошибки.
Со стрелочными функциями принцип тот же:
const multiply = (x: number, y: number): number => {
return x * y;
};
Опциональные параметры - точно также как и разбирали у объектов
function greet(name: string, title?: string) {
if (title) {
console.log(`${title} ${name}`);
} else {
console.log(name);
}
}
greet("Анна");
greet("Анна", "Доктор");
Если у параметра есть значение по умолчанию — он автоматически считается необязательным
function power(base: number, exp: number = 2) {
return base ** exp;
}
power(5); // 25
power(5, 3); // 125
Тип функции (function type)
type BinaryFn = (a: number, b: number) => number;
const add: BinaryFn = (x, y) => x + y;
const sub: BinaryFn = (x, y) => x - y;
type Example = {
a: number;
b: string;
c: BinaryFn;
};
Либо если функцию надо запихнуть в объект
interface User {
name: string;
sayHi: () => void;
}
const u: User = {
name: "Иван",
sayHi() {
console.log("Привет!");
}
};
void и never - Еще одни приколы которые обознаают либо отсутствие возврата, либо что функция вообще ни когда не вернет ничего (например исключение или бесконечный цикл):
function log(msg: string): void {
console.log(msg);
}
function crash(): never {
throw new Error("Что-то пошло не так");
}
function infinite(): never {
while (true) {}
}
Rest-параметры - работает как в JS, но типизируется
function sumAll(...nums: number[]) {
return nums.reduce((a, b) => a + b, 0);
}
sumAll(1, 2, 3, 4);
Берлога программиста | ЧатМне приснилось то на канал подписано 28 000 человек, видимо пора новый пост выпускать
Добрый вечер! У Меня к Вам домашнее задание:
1) Вступить в чат где мы общаемся, хихикаем и развиваем навыки разработки https://t.me/+36NOAKnCVuc2ZDNi
2) Дать каналу буст чтобы я мог постить пользу еще и в сторис https://t.me/c/1400947488?boost
3 подхода по 2 раза в день
Проголосуйте плиз по максимуму - я ж не по приколу, а чтобы понимать про что и как часто писать, давайте-давайте! 🚽
Я уже изучил… (выберите что можете уверенно использовать)
А завтра возвращаемся к тайпскрипт, продолжу Вас доучивать перед реактом
А что делают useMemo / useCallback знаете?
Конечно только примитивы и возврат useMemo / useCallback!
Если массив зависимостей пустой [] - useEffect сработает только один раз при монтировании компоента, а если его наоборот не передавать - будет срабатывать при каждом обновлении компонента.
Что-то Вы мало отвечали в этом опросе... или не знаете или для всех совсем очевидно, но и хорошо если очевидно - меньше банальны ошибок!)
Пару часиков как обычно отвечайте и потом откомменчу, вроде Вам в тот раз понравился такой формат работы. Да и в комменты задавайте вопросы - я почти не кусаюсь 😈
Как использовать dependencies array в useEffect 🖼️
