Подтвердить что ты не робот

Исключить/перезаписать типовые примеры, предоставленные npm

У меня есть пакет npm с плохо написанными, устаревшими типами. Я написал свои собственные типизации, и теперь мне интересно, могу ли я как-то исключить оригинальные типизации из пакета npm. Это не простое расширение интерфейсов, оригиналы в настоящий момент являются мусором.

Использование списка исключений в tsconfig.json, конечно, не работает для этой цели, поскольку оно все еще загружает файлы из node_modules, даже если вы исключили эту папку.

4b9b3361

Ответ 1

Вы можете получить желаемое поведение с помощью опции paths в tsConfig. Это может выглядеть примерно так:

{
    "compilerOptions": {
       ...
        "paths": {
            "*": [
                "src/*",
                "declarations/*"
            ]
        }
    },
    ...
}

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

Чтобы переопределить типизацию модуля узла, есть две опции:

  1. поместите папку с именем как модуль в папку объявлений, содержащую файл index.d.ts для набора текста

  2. поместите файл декларации, названный как модуль, в папку декларации

В качестве рабочего примера вы можете взглянуть на этот репозиторий https://github.com/kaoDev/react-ts-sample

Важный намек Бернхарда Кенига:

Порядок путей имеет значение. Мне пришлось поместить путь с моими переопределениями перед путем с исходными определениями типов, чтобы мои переопределения были выбраны первыми. - Бернхард Кениг

Ответ 2

Создайте папку node_modules под своим src, а затем поместите в нее типы модулей, которые вы хотите перезаписать:

├── node_modules
│   └── ...
│
└── src
    ├── index.ts
    ├── ... your codes ...
    │
    └── node_modules
        └── <module-to-be-overwritten>
            └── index.d.ts

Нет необходимости изменять compilerOptions в tsconfig.json.

Прочтите, как TypeScript разрешает раздел модулей в https://www.typescriptlang.org/docs/handbook/module-resolution.html.