export type FCLel = …
https://www.typescriptlang.org/docs/handbook/declaration-merging.html
но снаружи-то я хоу использовать его как FC
Мы сейчас используем patch (не идеальный вариант)
подробнее, пжлста
я понимаю
yarn patch можно свои патчи на пакеты писать
Но в твоем варианте я бы просто объявил бы свой тип и его использовал в проекте, почему так не хочешь?
https://t.me/ts_cool/133953
Не знаю, что за ярн такой, не мой вариант
Тогда компонент обертка как предложили выше (это самый надежный вариант когда используется что то внешнее) ну или форк либы
можно patch-package взять, если без патчей никак не получится.
то есть нет никакого способа пропатчить типы внешней зависимости? прям никак?
Да что то я не знаю способов, я думал declare module будет нормально работать. Но видимо не просто так у нас в команде перешли на patch
TS в соответствии с принципом открытости/закрытости позволяет либо расширять модули новыми типами, либо полностью заменять их, но не модифицировать (тут можно посмотреть подробнее: https://t.me/ts_cool/124834). Модуль react экспортирует свои основные типы в виде огромного неймспейса, а в TS нет синтаксических средств для вырезания какого-либо значения из неймспейса, или для копирования в один неймспейс части другого неймспейса без явного перечисления всех копируемых элементов, поэтому удобных способов именно переопределить типы react нет. Но можно использовать три половинчатых подхода: 1) Ничего не переопределять во внешнем модуле, а только расширить его новыми типами. Архитектурно это самый правильный способ (самый явный для читающих код), так что TS поддерживает его нативно, и он проще всего в реализации. 2) Если нужно именно переопределить тип внешнего модуля, можно с помощью параметра paths в tsconfig.ts перенаправить TS на свою реализацию типов react (на рантайм это не повлияет), однако в этой реализации придётся вручную указать все типы из оригинального модуля react, которые понадобятся в проекте. 3) Технически переопределить тип модуля react можно и без paths (вынести оригинальные типы react в глобальную область видимости, и использовать их в скрипте со своим определением модуля react), но при таком способе придётся указывать все используемые типы react уже в двух местах.
Крутой ответ 👍
херасе это круто, спасибо тебе
Такие файлы деклараций пишутся вручную или генерируются https://github.com/DefinitelyTyped/DefinitelyTyped/blob/master/types/react/index.d.ts#L65?
Этот вручную пишется
а где почитать как генерируются файлы декларации для библиотеки на ts? или лучше вручную писать, например, библиотеки view-компонентов или апи?
Обсуждают сегодня