Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥12😁8👍4
Привет 👋
Задача, снова задача) Через тренировки можно подготовиться к большинству собеседований.
Условие:
Нужно дописать функцию, которая принимает два параметра:
1. Массив чисел
2. Функцию-предикат, которая принимает значение элемента массива и возвращает
Нужно найти в массиве индекс элемента, для которого предикат вернет
Входные параметры:
Решение:
И все? Да, и все😅 Многие могут начать писать функции, в которых используют цикл
#interview #JavaScript
Задача, снова задача) Через тренировки можно подготовиться к большинству собеседований.
Условие:
Нужно дописать функцию, которая принимает два параметра:
1. Массив чисел
2. Функцию-предикат, которая принимает значение элемента массива и возвращает
true или false.Нужно найти в массиве индекс элемента, для которого предикат вернет
true. Если такого элемента нет, вернуть -1.Входные параметры:
findInArray([1, 3, 5, 6, 7], (value) => value % 2 === 0); // Должно вернуть 3
findInArray([1, 3, 5, 7], (value) => value % 2 === 0); // Должно вернуть -1
Решение:
const findInArray = (arr, predicate) => arr.findIndex(predicate);
И все? Да, и все
for, но в JS уже есть встроенные методы о которых нужно знать и использовать.#interview #JavaScript
Please open Telegram to view this post
VIEW IN TELEGRAM
👍9🔥7
Сегодня база про cookie. Мы работаем с ними каждый день, и про них спрашивают почти на каждом собеседовании.
Что такое cookie?
Cookie — это строка с данными, которую браузер сохраняет и автоматически отправляет серверу при каждом HTTP-запросе.
Как устанавливаются куки?
Как еще можно установить?
Куки могут быть установлены сервером через HTTP-ответы с помощью заголовка
Свойства:
1.
2.
3.
4.
5.
6.
Удаление cookies:
Можно удалить куку, установив её с датой, которая уже прошла, или задать значение
Особенности:
1. Максимальный размер не должен превышать 4 KB.
2. Куки отправляются на каждый запрос.
#JavaScript
Что такое cookie?
Cookie — это строка с данными, которую браузер сохраняет и автоматически отправляет серверу при каждом HTTP-запросе.
Как устанавливаются куки?
document.cookie = "token=abc123; path=/; max-age=3600";
Как еще можно установить?
Куки могут быть установлены сервером через HTTP-ответы с помощью заголовка
Set-Cookie. Когда сервер хочет установить куку на клиенте, он отправляет этот заголовок в ответе на запрос.Свойства:
1.
path: Определяет путь, для которого кука будет доступна. По умолчанию: / — доступна на всем сайте.2.
expires: Устанавливает дату истечения срока действия куки. По умолчанию: кука сессионная и удаляется при закрытии браузера.3.
max-age: Устанавливает время жизни куки в секундах. По умолчанию: не указан, кука сессионная.4.
secure: Указывает, что кука будет передаваться только по HTTPS. По умолчанию: не установлен, кука будет передаваться как по HTTP, так и по HTTPS.5.
samesite: Определяет, можно ли отправлять куку с запросами на другие сайты. По умолчанию: не указан, кука отправляется с запросами как с того же сайта, так и с внешних источников.6.
httpOnly: Указывает, что кука будет доступна только для сервера и не может быть прочитана через JavaScript. Это улучшает безопасность, предотвращая атаки. По умолчанию: не установлен.Удаление cookies:
Можно удалить куку, установив её с датой, которая уже прошла, или задать значение
max-age равным 0 или отрицательным числом.Особенности:
1. Максимальный размер не должен превышать 4 KB.
2. Куки отправляются на каждый запрос.
#JavaScript
👍12🔥3❤2
Один из моих любимых утилити-типов в TypeScript —
Что делает ReturnType?
Пример:
Теперь
Где применять?
У меня есть идеальный кейс на одном из проектов: компонент, который завязан на данные из хука. Тут идеально подходит
Что-то на подобии такого:
Конечно, мы можем создать отдельный тип и использовать его и в хукe, и в компоненте, но тогда при изменениях придётся править в нескольких местах.
Это не единственное применение
#typescript
ReturnType. Сегодня пост о нём.Что делает ReturnType?
ReturnType<T> — извлекает тип возвращаемого значения из функции T.Пример:
function getUser() {
return { id: 1, name: 'Василий' };
}
type User = ReturnType<typeof getUser>;
// { id: number, name: string }
Теперь
User всегда будет соответствовать тому, что возвращает getUser. Где применять?
У меня есть идеальный кейс на одном из проектов: компонент, который завязан на данные из хука. Тут идеально подходит
ReturnType — можно получить тип возвращаемого значения хука и использовать его в пропсах компонента.Что-то на подобии такого:
// Какой-то хук с логикой
function useUserData() {}
// Пропсы компонента
interface Props {
data: ReturnType<typeof useUserData>;
};
function UserInfo({ data }: Props) {}
Конечно, мы можем создать отдельный тип и использовать его и в хукe, и в компоненте, но тогда при изменениях придётся править в нескольких местах.
interface User {}
function useUserData(): User {}
interface Props {
data: User;
};
function UserInfo({ data }: Props) {}
Это не единственное применение
ReturnType. Главное знать о его существовании и сами найдете применение в своем проекте)#typescript
🔥7👍5
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
😁14 8
Привет! Начнем неделю с очень крутой задачи на знание основ JS. Наверное, большинство может запутаться и дать неправильный ответ, но в этом нет ничего страшного.
Что выведет этот код?
Ответ:
Ничего не будет выведено.
Разбор:
1. Переменная
2. В условии проверяется
Почему так?
Переменные, объявленные через
#JavaScript #interview
Что выведет этот код?
var a = 5;
function f() {
if (a) {
console.log(a);
var a = 10;
}
}
f();
Ответ:
Разбор:
1. Переменная
a внутри функции f поднимается в начало функции, но её значение остаётся undefined до строки var a = 10;.2. В условии проверяется
undefined, поэтому console.log(a) не вызывается.Почему так?
Переменные, объявленные через
var, поднимаются в начало области видимости, но их значение присваивается только на момент выполнения строки с присваиванием.#JavaScript #interview
👍13❤4👏4
Почти каждый из нас работает с TypeScript, и большинство сталкивалось с пересечением типов.
Что такое пересечение типов?
Пересечение типов позволяет объединить несколько типов в один. Это означает, что переменная будет иметь свойства всех типов, которые пересекаются.
Тип
Важно
Когда два типа имеют одинаковые поля с различными типами, это приводит к ошибке. В TypeScript такие поля получают тип
#typescript
Что такое пересечение типов?
Пересечение типов позволяет объединить несколько типов в один. Это означает, что переменная будет иметь свойства всех типов, которые пересекаются.
interface Employee {
name: string;
position: string
}
interface ContactInfo {
email: string;
phone: string
}
type EmployeeContact = Employee & ContactInfo;
const employee: EmployeeContact = {
name: 'Иван',
position: 'Разработчик',
email: 'ivan@google.com',
phone: '+7(900)-000-0000'
};
Тип
EmployeeContact включает в себя как поля из типа Employee, так и поля из типа ContactInfo.Важно
Когда два типа имеют одинаковые поля с различными типами, это приводит к ошибке. В TypeScript такие поля получают тип
never, что делает невозможным присваивание значений. #typescript
👍10🔥5
Разберём ещё один полезный утилити-тип — Awaited 🖼️ . Он позволяет извлечь тип результата из промиса.
Что делает
Проще говоря — убирает
Пример:
Здесь мы комбинируем два утилити-типа —
Сначала
#typescript
Что делает
Awaited?Awaited<T> возвращает тип, в который разрешается промис T.Проще говоря — убирает
Promise-обёртку и достаёт внутренний тип.Пример:
async function fetchData(): Promise<string> {
return "Строка с данными";
}
type ResultType = Awaited<ReturnType<typeof fetchData>>;
// Тип: string
Здесь мы комбинируем два утилити-типа —
ReturnType (о котором я писал в этом посте) и Awaited.Сначала
ReturnType<typeof fetchData> даёт нам Promise<string>, а затем Awaited вытаскивает из него string.#typescript
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥11👍5👏2
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
😁10 8