Ответы пользователя по тегу TypeScript
  • Где хранить переиспользуемые интерфейсы typescript?

    Robur
    @Robur
    Знаю больше чем это необходимо
    Законно, по крайней мере пока еще не запретили, но возможно мы к этому когда-нибудь придем.
    Храните как вам удобно - интерфейсы бывают разные, если это вообще глобальные - то в один файл в корне, но таких на самом деле обычно мало и больше тайп-конвертеры.
    Чаще всего интерфейсы описывают какие-то сущности, кладите их туда же где и код который отвечает за эти сущности.
    Например если у вас есть стор и в нем какие-то данные описанные интерфейсами - кладите рядом с данными и экспортируйте оттуда.
    Если есть апи которое возвращает данные и для этих данных есть интерфейсы - кладите рядом с апи. И так далее.
    Можно прямо в файлах с логикой, можно рядом в файле чисто с интерфейсами. Мне удобнее все в одном - так как если что-то меняется в интерфейсе то обычно меняется вместе с логикой.
    Ответ написан
    Комментировать
  • Почему можно переопредилить функцию, которая на входе требует иной сигнатуры?

    Robur
    @Robur
    Знаю больше чем это необходимо
    во первых, у вас код неправильный, должно быть видимо let foo: ( x: number ) => void
    потому что проверка типов это не просто сравнивание сигнатур функций - это проверка что один тип может быть приведен к другому.
    функция у которой нет параметра может быть вызвана в месте где ей передадут параметр, она просто его проигнорирует. То есть тип функции без параметров приводится к типу с параметрами.
    По факту, если вы вызовите foo(123) то она отработает нормально, что система типов и учитывает.

    попробуйте сделать наоборот и сразу получите ошибку:
    let foo: () => void = (x: number) => null
    То же самое если параметры будут не совпадать по типам
    Ответ написан
  • Какой порядок элементов класса принято использовать в TypeScript?

    Robur
    @Robur
    Знаю больше чем это необходимо
    Одно из самых маловажных правил. Все равно будет использоваться интелисенс и навигация в ide.

    Самый общий подход - свойства кучкой и конструктор вначале, статику тоже где-то рядом, все остальное (это руками все равно никто не будет искать) потом.

    Что-то более строгое - уже ненужная бюрократия.
    Ответ написан
    Комментировать
  • Книги по JavaScript, наподобие как Рихтер "CLR via C#?

    Robur
    @Robur
    Знаю больше чем это необходимо
    книг не знаю (сомневаюсь что есть), но вот тут кишков по v8 достаточно. https://v8.dev/
    Ответ написан
    Комментировать
  • TS:Cannot find module и ругается на декораторы. Что за ерунда?

    Robur
    @Robur
    Знаю больше чем это необходимо
    Если собирается нормально а в vscode ругается - у вас vscode использует какой-то другой тайпскрипт нежели тот что используется для сборки. Возможно и tsconfig тоже не подтягивается или подтягивается не тот.
    Ответ написан