Обход неверного файла index.d.ts, предоставленного пакетом npm - PullRequest
0 голосов
/ 18 марта 2019

Недавно я обнаружил пакет npm, который не был написан на TypeScript, но предоставлял собственный файл index.d.ts. К сожалению, эти типы были неточными и были внесены кем-то, кто не поддерживал пакет. Когда я добавляю директиву /// <reference... для указания на мои фиксированные типы, VS Code кажется неуверенным в том, что делать, и сообщает мне, что для данных объектов есть два определения типов. Я не могу двигаться дальше, пока это не решено. Что я могу сделать, чтобы работать, кроме редактирования файла в node_modules на моем компьютере?

Если бы эти типы были предоставлены DefiniteTyped, это было бы легко: я бы просто удалил плохие, отправил бы пиар с моими изменениями, тем временем использовал бы мою локальную версию. Так как это index.d.ts является частью самой библиотеки, мой единственный вариант - клонировать весь репозиторий, работать с ним, представить PR, когда я буду готов, надеюсь, они быстро объединятся и выпустят новую версию? Это не кажется правильным. Есть ли способ сказать компилятору игнорировать определенный файл index.d.ts в node_modules, так что мой единственный?

Ответы [ 2 ]

1 голос
/ 18 марта 2019

Добавьте skipLibCheck: true в compilerOptions в файле tsconfig.json.Это отключает проверку типов для всех файлов * .d.ts.

Флаг описан в документации по параметрам компилятора .

Другой вариант, если вы уверены, что ваш кодправильно игнорировать ошибки, используя // @ts-ignore комментарии в строках, где вы получаете ошибки.

Здесь также ссылка на аналогичный пост, который предлагает также два возможных решения.

0 голосов
/ 20 марта 2019

Комментарий здесь , связанный в комментарии @AlesD к другому ответу, отлично справился с задачей.В src создайте node_modules/problem-library/index.d.ts и поместите туда обновленные определения типов.Они будут переопределять те, что предоставляются библиотекой.

Ваш .gitignore, скорее всего, проигнорирует ваш файл, что не годится.Это можно исправить, изменив свой .gitignore

node_modules/
!src/node_modules/

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

...