Каков вариант использования включения объявления и объявления в tsconfig.json?

Если мы включим исходную карту, которая позволит нам отлаживать браузер. Точно так же ищите вариант использования декларации и DeclarationMap.

Я искал в Интернете, но моя ошибка не смогла найти фактический вариант использования, кроме создания файла .d.ts.


person Sathishkumar    schedule 19.10.2019    source источник


Ответы (2)


Генерация файлов .d.ts — это как раз вариант использования для параметра компилятора declaration, поэтому вывод сборки — .js, в то время как все определения типов могут быть сохранены для других проектов TS, использующих ваш проект.

IDE может использовать declarationMap для улучшения взаимодействия с разработчиком: он позволяет быстро перейти к исходным источникам, когда у вас в данный момент открыт соответствующий файл .d.ts и вы хотите увидеть его реализацию (см. также этот ответ).

Включение --declarationMap вместе с --declaration приводит к тому, что компилятор создает файлы .d.ts.map вместе с выходными файлами .d.ts. Языковые службы также теперь могут понимать эти файлы сопоставления и использовать их для сопоставления местоположений определений на основе файла объявлений с их исходным источником, если он доступен.

Другими словами, нажатие кнопки «Перейти к определению» в объявлении из файла .d.ts, сгенерированного с помощью --declarationMap, приведет вас к местоположению исходного файла (.ts), где было определено это объявление, а не к .d. тс.

person ford04    schedule 19.10.2019
comment
Круто :) Понятно... Я проверил добавление некоторых пакетов, таких как npm i faker. В то время я не мог найти определения типов в своей среде IDE. Поэтому я добавил npm i @types/faker, который предоставляет файл .d.ts для улучшения работы разработчика в среде IDE. поэтому он просто предоставляет определение типа разработчику, а также компилятор машинописного текста для обеспечения вывода типа. - person Sathishkumar; 20.10.2019

По мере роста вашего приложения Typescript будет занимать все больше и больше времени для проверки типов и компиляции вашего кода. При большой кодовой базе медленное время компиляции может серьезно замедлить вашу разработку. Чтобы преодолеть это, начиная с Typescript 3.0, вы можете разделить большой проект на более мелкие подпроекты, используя Ссылки на проекты. Параметры declaration и declarationMap играют здесь большую роль.


declaration вариант

Включение параметра declaration приведет к тому, что компилятор Typescript создаст файлы объявлений (.d.ts). Файлы .d.ts содержат объявления типов, используемых в соответствующих файлах .ts. Они не содержат реализации типов, они просто содержат общедоступные объявления типов.

Таким образом, любой может использовать типы из вашего проекта Typescript в каком-либо другом проекте Typescript. Компилятор может проверить тип кода в этом другом проекте с помощью ваших .d.ts файлов, даже если у них нет доступа к вашему проекту.

Это то, что помогает, когда вы разбиваете большой проект на несколько небольших подпроектов. Подпроекты имеют доступ к файлам объявлений друг друга. Когда один из ваших подпроектов (скажем, B) зависит от типов, объявленных в другом подпроекте (скажем, A), компилятор использует файлы .d.ts из подпроекта A для проверки типов и компиляции подпроекта B без необходимость повторной компиляции подпроекта А. Это приводит к более быстрому времени компиляции в больших проектах.


declarationMap вариант

Когда вы включаете параметр declarationMap, компилятор Typescript создает файлы исходной карты объявления (.d.ts.map). Файлы исходных карт объявлений содержат определения сопоставления, которые связывают каждое объявление типа, сгенерированное в .d.ts файлах, с исходным исходным файлом (.ts). Определения сопоставления в этих файлах имеют формат JSON.

Они используются вашим редактором/IDE. Вы сможете использовать функции редактора, такие как «Перейти к определению» и «Переименовать», для навигации и редактирования кода в подпроектах. Это означает, например, что если вы переименуете тип в одном подпроекте, это изменение будет распространено и на другие подпроекты.


Обратите внимание, что вы можете использовать эти параметры, даже если вы не разделяете свой проект. Это полезно, если вы хотите иметь функцию редактора «Перейти к определению» для .d.ts файлов. Если вы нажмете «Перейти к определению» в объявлении из файла .d.ts, вы перейдете к местоположению исходного файла (.ts), а не к местоположению .d.ts. Но эти опции действительно хороши в разделенных проектах.

Вот и все! Надеюсь, это поможет.

Если у вас есть проект с более чем 150 файлами или около того, рекомендуется разделить его на более мелкие подпроекты, используя ссылку Ссылки на проекты.

person Yogesh Umesh Vaity    schedule 28.07.2020
comment
Каковы последствия этого для конечного потребителя упаковки? Должен ли я хранить карты declarationMap, например, в опубликованном пакете NPM, или они бесполезны в этом случае? - person Eric Burel; 07.04.2021
comment
@EricBurel, не нужно отправлять их с окончательным кодом, который будет запущен. Они полезны только для разработчиков. Если вы пишете библиотеку, вы должны поставлять ее в отдельном пакете. - person Yogesh Umesh Vaity; 07.04.2021