• Отправка видеороликов через partial?

    @OrbiJ Автор вопроса
    a0xh, к чему это?
    Написано
  • Как правильно ограничивать передаваемые аргументы классов в TypeScript?

    @OrbiJ Автор вопроса
    Aetae, понял, премного благодарен за уделённое время, а то идея о том, что ведь не может всё быть так просто мне покоя никак не давала и я 2 дня потратил на поиски того, как это всё должно работать и как писать наиболее правильный и поддерживаемый код. Ещё раз спасибо за ваши ответы! :)
  • Как правильно ограничивать передаваемые аргументы классов в TypeScript?

    @OrbiJ Автор вопроса
    Aetae, мда, конечно, это вообще какой-то супер странный подход, не зря из года в год слышу про то, что JS это чуть ли не раковая опухоль индустрии.

    А как вообще тогда правильно писать унифицированные валидаторы или разделять логику? Как мне в принципе хоть как-то унифицировать проверки для моделей, если у меня их, к примеру, 50 штук? И как опытные разрабы TS/JS борются с этой задачей?
  • Как правильно ограничивать передаваемые аргументы классов в TypeScript?

    @OrbiJ Автор вопроса
    Aetae, т.е. ещё раз, класс User имеет след. конструктор:

    constructor(name : string);

    Я хочу получить вот это самое наименование аргумента ('name' и его тип : string), хотя мне тип, на самом деле, для первичной проверки не так важен. Допустим я получил name, далее я обращаюсь к response.data.name и смотрю на результат, допустим, это не undefined, тогда я беру и смотрю на тип этого свойства и на тип аргумента конструктора с таким наименованием, если они равны, то проверка св-ва пройдена.

    Ну, в моём понимании это вообще основа, которая должна быть в любом языке, как этого в принципе в ЯП под веб может не быть?
  • Как правильно ограничивать передаваемые аргументы классов в TypeScript?

    @OrbiJ Автор вопроса
    Aetae, а разве мне вообще нужно сравнивать? Допустим я проверил, что в поле data записан объект, вообще без разницы какой, если я обращусь к полю response.data.chtoygodno и этого св-ва нет, то я получу undefined, мне ведь главное достать из сигнатуры конструктора класса поля, в которые мне и нужно тыкнуться у response.data. Вообще хоть какой-то способ получить аргументы конструктора класса User есть? Ведь если я их получу, то всё остальное уже решается почти сразу же.
  • Как правильно ограничивать передаваемые аргументы классов в TypeScript?

    @OrbiJ Автор вопроса
    Aetae, стоп, а зачем мне вообще трогать response с точки зрения какой-либо дополнительной логики? Ведь response является объектом AxiosResponse, и я точно знаю, что параметры, которые мне нужно проверять, находятся внутри data.

    В моём понимании логика была следующая:
    1) Вызывается axios-запрос к серверу, который как-то обрабатывается интерцепторами и по итогу я всегда получаю в результате свой объект AxiosResponse.
    2)Я получил объект AxiosResponse, который всегда содержит свойство data, которое представляет собой некий объект со своими свойствами.
    3)Я вызываю функцию/метод, в который передаю непосредственно объект AxiosResponse и ссылку на конструктор класса, допустим, User.
    4)В этом самом методе проверки я извлекаю аргументы, получаемые конструктором и пробую вызвать response.data.constructor_param, чтобы получить значение св-ва, если же я где-то встречаю ,undefined, то проверка не пройдена.

    Вот у меня такая логика была изначально.
  • Как правильно ограничивать передаваемые аргументы классов в TypeScript?

    @OrbiJ Автор вопроса
    Aetae, если честно, не понял :D Но это я дурачок, не обращайте внимания, попробую расписать полную структуру сейчас:

    Есть абстрактный класс
    abstract class Api {
        public validateRequest (validationModel : this, response : AxiosResponse) : boolean {
            /* ВОТ ЗДЕСЬ СВЕРЯЮТСЯ ПАРАМЕТРЫ КОНСТРУКТОРА validationModel и response.data*/
            return true;
        }


    Далее есть класс:
    import User from "./EntityClasses/AllEntities/User";
    class UserApi extends Api {
    
        public async getAuthUser() : Promise<User | null> {
            let response = await this.sendRequest('get', 'currentUser');
            this.validateRequest(User, response);
            
            /* Пока просто делаю return null*/
            return null;
        }


    И по сути я вижу ошибку: Argument of type 'typeof User' is not assignable to parameter of type 'this'. 'this' could be instantiated with an arbitrary type which could be unrelated to 'typeof User'.

    Сам код-то работает, и если я попробую вывести тип validationModel, то получаю значение function, что, как я понимаю, и является непосредственно ссылкой на конструктор класса, но как мне получить доступ к его аргументам?
  • Как правильно ограничивать передаваемые аргументы классов в TypeScript?

    @OrbiJ Автор вопроса
    Окей, понял, благодарю за ответ, видимо, я не совсем правильно понял идею структурной типизации, мне казалось что в вопросах ограничения по родительским классам она работает так же как номинативная.

    Правда это всё ещё не отменяет моего вопроса: у меня есть метод класса, который должен сопоставлять параметры одного объекта и список параметров конструктора другого объекта и выполнять какое-то действие, если они идентичны. Я хочу, чтобы в каждом отдельном методе, который отвечает за запрос к API я мог указать нужный мне конструктор класса, с которым и будет происходить сопоставления, что корректно передавать непосредственно в метод проверки, вот этого я просто понять не могу?

    Допустим я в самом методе, который принимает unknown, будут проверять, что пришедшее в метод нечто является объектом и в его прототипе находится Entity, а в иных случаях буду обрабатывать ошибку, но мне всё ещё не ясно, как определить непосредственно список параметров конструктора, с которым и нужно сравнивать ответ пришедший со стороны сервера.
  • Как правильно ограничивать передаваемые аргументы классов в TypeScript?

    @OrbiJ Автор вопроса
    WbICHA, суть проста => метод принимается в себя что-то связанное с классом (алиас, сигнатуру класса, сигнатуру конструктора и т.д.), после чего и определяет, какие параметры нужно сверять. При этом доп. ограничением должно быть то, что все принимаемые классы должны являться потомками Entity. Не вижу воды в тексте, так как я конкретно сказал, что нужно сделать или куда меня ткнуть носом в доку/stackoverflow, если я неправильно понял суть тех же дженериков.
  • Как правильно ограничивать передаваемые аргументы классов в TypeScript?

    @OrbiJ Автор вопроса
    WbICHA, так я и не знаю :/ Мне для этого и нужна рефлексия или параметры конструктора, я же чётко написал, что мне нужно ограничить входящие классы потомками родительского, а параметры проверять на основе, например, параметров конструктора дочерних классов.
  • Почему не выполняются запросы MySQL в докере?

    @OrbiJ Автор вопроса
    Порты проброшены в docker-compose.yml
  • Почему не выполняются запросы MySQL в докере?

    @OrbiJ Автор вопроса
    пробовал, такой же результат, правда, это ещё и никак не объясняет тот факт, что, например, не происходит выполнения скрипта по созданию базы данных, он же вызывает из докер-контейнера :/
  • Почему не выполняются запросы MySQL в докере?

    @OrbiJ Автор вопроса
    ну вот допустим пока подключаюсь под root, мне нужно привести CMD к следующему виду:
    CMD mysqld \
    && mysql -ppassword -e "CREATE DATABASE mydb;GRANT ALL PRIVILEGES on mydb.* TO 'root'@'0.0.0.0' WITH GRANT OPTION;ALTER USER 'root'@'localhost' IDENTIFIED BY '${MYSQL_ROOT_PASSWORD}';FLUSH PRIVILEGES;"

    ? Или я вас неправильно понял, но вроде как директива GRANT и нужна для предоставления доступа через сеть, но в моём случае не срабатывает и запрос создания базы данных, если зайти в контейнер через docker-compose exec и проверить список баз данных, то mydb там не будет.
  • Контейнер с приложением на PHP в docker завершает свою работу, как исправить?

    @OrbiJ Автор вопроса
    Дмитрий понял, спасибо за ответ, видимо, не до конца разобрался, как работает модуль apache
  • Контейнер с приложением на PHP в docker завершает свою работу, как исправить?

    @OrbiJ Автор вопроса
    Дмитрий, я хочу в этот контейнер закинуть файлы своего приложения, поскольку у меня апач стоит с модулем php, то для чего мне fpm?
  • Контейнер с приложением на PHP в docker завершает свою работу, как исправить?

    @OrbiJ Автор вопроса
    Alexey Dmitriev, открывается интерактивная оболочка и сразу падает:
    app-1 | Interactive shell
    app-1 |
  • Как правильно подружить Vue и php?

    @OrbiJ Автор вопроса
    Премного благодарен за ответ, да, вы правы, до SSR мне ещё далеко. В целом всё понятно, я +- то же самое и пытался провернуть с вебпаком, но вот VITE мне просто весь мозг вынес особенно наличием этого index.html, я до сих пор не могу понять, зачем он тут вообще нужен? А повсеместные плашки о том, что нужно переходить именно на VITE вызывали ещё больше вопросов...
  • Как правильно подружить Vue и php?

    @OrbiJ Автор вопроса
    Ипатьев, а как это сделать-то? Я кроме как генерить этот самый бандл через webpack-simple и цеплять его скриптом к странице вариантов не вижу, но это такое себе решение, чрезмерно сложное для того, что я описал. Тем более, что с 3 версии во vue нативно идёт именно Vite, а не VUE-CLI. Все мануалы сводятся к базовой фразе: "давайте инициализируем проект и создадим шаблоны...". Ну так это я и сам мог сделать, мне бы понять, что этот шаблон делает и как мне его подружить с бэкендом. Повторюсь, в той же ларке до версии 8 вроде, точно не помню, всё сводилось к простой генерации бандла через mix (по сути тот же webpack) и его подключению куда угодно и как угодно, а сейчас они тоже полностью перешли на этот самый "вит" и проводят довольно много манипуляций для получения того же бандла :/
  • Как правильно подружить Vue и php?

    @OrbiJ Автор вопроса
    Владислав Лысков, за ссылочку спасибо, ознакомился, только это скорее фреймворк для фреймворка, где мы просто заменяем код Vue кодом PHP.
  • Как правильно подружить Vue и php?

    @OrbiJ Автор вопроса
    Владислав Лысков, да в целом понятно, что проще использовать REST API в лоб, мне просто непонятна сама суть проблемы и отсутствие вменяемой возможности реализовать эту фичу, особенно на фоне нарастающей популярности SSR. Это же просто JS-код, почему я не могу подтянуть его сбилдить в один файл и просто цеплять там, где мне нужно?