Все сервисы Хабра

Сообщество IT-специалистов

Ответы на любые вопросы об IT

Профессиональное развитие в IT

Удаленная работа для IT-специалистов

Войти на сайт
  • Все вопросы
  • Все теги
  • Пользователи

Хабр Q&A — вопросы и ответы для IT-специалистов

Получайте ответы на вопросы по любой теме из области IT от специалистов в этой теме.

Узнать больше
другие проекты хабра
  • Хабр
  • Карьера
  • Фриланс
Задать вопрос
WblCHA

WbICHA

  • 318
    вклад
  • 8
    вопросов
  • 345
    ответов
  • 63%
    решений
Ответы
  • Информация
  • Ответы
  • Вопросы
  • Комментарии
  • Подписки
  • Нравится
  • Достижения
  • Почему в «AutoHotkey 2» не срабатывает команда: Send "{Ctrl}{Shift}{c}"?

    WblCHA
    WbICHA @WblCHA
    Чтобы получить тот же эффект, тебе надо зажать соответствующие клавиши:
    Send "{Ctrl down}{Shift down}{c}{Shift up}{Ctrl up}"
    Ответ написан 03 дек.
    Комментировать
    Комментировать
  • Как сделать возврат курсора на прошлую линию при удалении отступа в vs code как в webstorm?

    WblCHA
    WbICHA @WblCHA
    https://marketplace.visualstudio.com/items?itemNam...
    Ответ написан 02 дек.
    Комментировать
    Комментировать
  • Как убрать схлопывание папок?

    WblCHA
    WbICHA @WblCHA
    "explorer.compactFolders": false
    Ответ написан 01 дек.
    Комментировать
    Комментировать
  • Почему TS некорректно вычисляет тип?

    WblCHA
    WbICHA @WblCHA
    Потому что у редьюса 3 оверлоада:
    reduce(callbackfn: (previousValue: T, currentValue: T, currentIndex: number, array: T[]) => T): T;
    reduce(callbackfn: (previousValue: T, currentValue: T, currentIndex: number, array: T[]) => T, initialValue: T): T;
    reduce<U>(callbackfn: (previousValue: U, currentValue: T, currentIndex: number, array: T[]) => U, initialValue: U): U;

    Если передаёшь инишиалВелью, то актуальны 2ой и 3ий. Если ты не передаёшь дженерик или не типизируешь аккумулятор, какой из оверлоадов "сработает" раньше, при условии, что тип инишиалВелью является частью типа велью?

    normalizeRules.reduce((acc: string, rule) => acc.replaceAll(rule, ""), input);
    // or
    normalizeRules.reduce<string>((acc, rule) => acc.replaceAll(rule, ""), input);
    Ответ написан 29 сент.
    Комментировать
    Комментировать
  • Как получить тип первой перегрузки в typescript?

    WblCHA
    WbICHA @WblCHA
    https://github.com/microsoft/TypeScript/issues/321...

    type OverloadProps<TOverload> = Pick<TOverload, keyof TOverload>;
    
    type OverloadUnionRecursive<TOverload, TPartialOverload = unknown> = TOverload extends (
      ...args: infer TArgs
    ) => infer TReturn
      ? // Prevent infinite recursion by stopping recursion when TPartialOverload
        // has accumulated all of the TOverload signatures.
        TPartialOverload extends TOverload
        ? never
        :
            | OverloadUnionRecursive<
                TPartialOverload & TOverload,
                TPartialOverload & ((...args: TArgs) => TReturn) & OverloadProps<TOverload>
              >
            | ((...args: TArgs) => TReturn)
      : never;
    
    type OverloadUnion<TOverload extends (...args: any[]) => any> = Exclude<
      OverloadUnionRecursive<
        // The "() => never" signature must be hoisted to the "front" of the
        // intersection, for two reasons: a) because recursion stops when it is
        // encountered, and b) it seems to prevent the collapse of subsequent
        // "compatible" signatures (eg. "() => void" into "(a?: 1) => void"),
        // which gives a direct conversion to a union.
        (() => never) & TOverload
      >,
      TOverload extends () => never ? never : () => never
    >;
    
    // Inferring a union of parameter tuples or return types is now possible.
    type OverloadParameters<T extends (...args: any[]) => any> = Parameters<OverloadUnion<T>>;
    type OverloadReturnType<T extends (...args: any[]) => any> = ReturnType<OverloadUnion<T>>;

    https://www.typescriptlang.org/play?ts=4.7.2#code/...
    Ответ написан 28 сент.
    1 комментарий
    1 комментарий
  • Расширение или сниппет для ввода комментария заданной длины?

    WblCHA
    WbICHA @WblCHA
    https://marketplace.visualstudio.com/items?itemNam...
    Ответ написан 20 сент.
    Комментировать
    Комментировать
  • Timestamp или инкремент версии в тексте при сохранении файла - какие редакторы или IDE так могут?

    WblCHA
    WbICHA @WblCHA
    VSCode конечно же.
    Он почти как npm, есть плагины для всего: https://marketplace.visualstudio.com/items?itemNam...
    Ответ написан 19 сент.
    Комментировать
    Комментировать
  • Можно ли использовать api в том же слое, в котором находится модуль в FSD архитектуре?

    WblCHA
    WbICHA @WblCHA
    Использовать слои внутри друг друга — нельзя (кроме шейрд).
    Использовать сегменты внутри одного компонента слоя — можно (иначе в чем смысл?).

    В целом, всё это можно проверить с помощью еслинта с соответствующим конфигом: https://www.npmjs.com/package/@feature-sliced/esli...
    В целом, он актуален, но если есть какие-то кастомные слои или сегменты, то он их не примет. Тут либо форкать его, либо к себе в проект копировать и там править.
    Ответ написан 23 авг.
    Комментировать
    Комментировать
  • Где должны храниться файлы с тестами в модульной и FSD архитектуре Front-end?

    WblCHA
    WbICHA @WblCHA
    В папке __tests__ на том же уровне, что и тестируемый файл. Локальные моки там же, глобальные для пекеджей согласно документации библиотеки для тестирования, а свои глобальные уже смотреть надо, в фсд можно в шейрд запихнуть.

    П.с.: но это всё очень условные правила, всё зависит от проекта и принятых там правил. Так же и от настроек линтера (в смысле можно настроить какой хочешь паттерн). Так что не грех попробовать разные варианты и выбрать тот, который для тебя/команды и проекта больше подходит.
    Ответ написан 09 авг.
    Комментировать
    Комментировать
  • Как вывести боди в зависимости от типа?

    WblCHA
    WbICHA @WblCHA
    Можно, конечно, написать красивее, но там сам тип тогда править надо.

    function handler<T extends C["type"]>(type: T, body: Omit<C & { type: T }, 'type'>) {}
    Ответ написан 20 июл.
    Комментировать
    Комментировать
  • Как убрать вот эту черточку между папками, чтоб при нажатии на папку, внутренняя папка сплывала вниз?

    WblCHA
    WbICHA @WblCHA
    https://stackoverflow.com/questions/59432350/why-a...

    The setting you are looking for is "compact folders". You can get there by going to: File → Preferences → Settings → explorer.compactFolders and then unchecking the box.

    Параметр, который вы ищете, это «компактные папки». Вы можете попасть туда, выбрав: Файл → Настройки → Настройки → explorer.compactFolders, а затем сняв флажок.
    Ответ написан 08 июн.
    Комментировать
    Комментировать
  • Как создать Тип функции, принимающей тип и возвращающей интерфейс?

    WblCHA
    WbICHA @WblCHA
    interface Num <T>{
        resultedType: T extends { valueOf: () => infer P } ? P : never
    }
    
    const evgeniy = <T extends string | number>(x: T): Num<T> {
    Ответ написан 17 апр.
    Комментировать
    Комментировать
  • Можно ли заставить VS Code считать доллар буквой?

    WblCHA
    WbICHA @WblCHA
    Удали из настройки editor.wordSeparators ненужные знаки разделения слов.
    Ответ написан 16 мар.
    Комментировать
    Комментировать
  • Как сделать динамическую проверку существования ключа при создании функции?

    WblCHA
    WbICHA @WblCHA
    Taulan Khatuaev, pavelpressf, потрясающие ответы с эни (нет).

    function helloFunc<T extends object, K extends keyof T>(arg: {
      nameKey: K,
      object: T
    }) {
      console.log(`Привет,  ${arg.object[arg.nameKey]}`)
    }


    https://www.typescriptlang.org/play?#code/GYVwdgxg...
    Ответ написан 11 мар.
    1 комментарий
    1 комментарий
  • Как вернуть тип из колбэка без явного указания?

    WblCHA
    WbICHA @WblCHA
    https://www.typescriptlang.org/play?#code/MYGwhgzh...
    Ответ написан 16 дек. 2022
    Комментировать
    Комментировать
  • Как лучше отфильтровать массив по массиву условий?

    WblCHA
    WbICHA @WblCHA
    const condition = {
        exclude: [{
          disabled: true
        }],
        include: [{
          rating: 24
        }]
      }
    
    
      const getFiltered = (data, filters) => {
        const {
          include,
          exclude
        } = filters;
    
        let filteredData = data;
    
        if (include) {
          const includeEntries = include.flatMap(filter => Object.entries(filter));
          filteredData = filteredData.filter(value =>
            includeEntries.every(([key, valueFilter]) => value[key] === valueFilter)
          );
        }
    
        if (exclude) {
          const excludeEntries = exclude.flatMap(filter => Object.entries(filter));
          filteredData = filteredData.filter(value =>
            excludeEntries.every(([key, valueFilter]) => value[key] !== valueFilter)
          );
        }
    
        return filteredData;
      }
    Ответ написан 14 дек. 2022
    10 комментариев
    10 комментариев
  • Как обвернуть одинаковые куски кода в отдельные одинаковые теги в vscode?

    WblCHA
    WbICHA @WblCHA
    Назначаешь сочетание кнопок на "Change All Occurrences", выделяешь текст, жмёшь сочетание и правишь все выделенные части разом как душе угодно.

    Скорее всего там есть дефолтная комбинация, но я хз какая.
    Ответ написан более года назад
    Комментировать
    Комментировать
  • Как сделать так, что бы при нажатии на tab фокус не пререходил на button?

    WblCHA
    WbICHA @WblCHA
    https://developer.mozilla.org/en-US/docs/Web/HTML/...
    Ответ написан более года назад
    1 комментарий
    1 комментарий
  • Как правильно протипизировать createSelector с аргументом?

    WblCHA
    WbICHA @WblCHA
    Может красивее и можно сделать, но в голову ничего не пришло. Разве что типы для крейтСелектора переписать, но это просто удачи.)
    https://www.typescriptlang.org/play?#code/JYWwDg9g...
    В любом случае, это, пожалуй, наименее геморройный и универсальный вариант.
    Ответ написан более года назад
    Комментировать
    Комментировать
  • Как заменить несколько слов в строке?

    WblCHA
    WbICHA @WblCHA
    Данные ответы в комментах несовсем верные.
    Во-первых, флаг i для нелатинских букв бесполезен. upd.: моя ошибка, в жсе i работает с нелатинскими символами.
    Во-вторых, даже без учёта регистра, они не учитывают все варианты.
    /(\s*)(?<![\w\dА-ЯЁа-яё\-])[Сс][Оо][Уу][Сс][\w\dА-ЯЁа-яё\-]*(\s*)/g
    
    str.replace(
      /(\s*)(?<![\w\dа-яё\-])соус[\w\dа-яё\-]*(\s*)/ig,
      (_, leftSpaces, rightSpaces) => leftSpaces && rightSpaces ? ' ' : ''
    )
    Ответ написан более года назад
    7 комментариев
    7 комментариев
Оценили как «Нравится»
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • Следующие →
Самые активные сегодня
  • AshBlade
    Сергей Соловьев
    • 6 ответов
    • 0 вопросов
  • mayton2019
    • 5 ответов
    • 0 вопросов
  • Mike_Ro
    Михаил Р.
    • 4 ответа
    • 0 вопросов
  • rPman
    • 4 ответа
    • 0 вопросов
  • delphinpro
    Сергей delphinpro
    • 3 ответа
    • 0 вопросов
  • eres_time
    • 3 ответа
    • 0 вопросов
  • © Habr
  • О сервисе
  • Правила
  • Обратная связь
  • Блог

Войдите на сайт

Чтобы задать вопрос и получить на него квалифицированный ответ.
Войти через центр авторизации