Ответ 1
По состоянию на TypeScript 2. * 'tsconfig.json' имеет следующие два доступных свойства:
{
'typeRoots': [],
'types': []
}
Я буду подробно описывать порядок.
-
'typeRoots' указывает корневые папки, в которых транспилятор должен искать определения типов (например: 'node_modules').
-
Если вы используете typescript, вы знаете, что для разных библиотек, которые не были написаны с использованием typescript, вам нужны определения, чтобы компилятор мог распознавать глобальные переменные и иметь поддержку IntelliSense.
-
Эта проблема была решена проектами (repos), такими как "ОпределенноТип", которые используют такие инструменты, как tsd или типизация для загрузки типизирования, необходимого для вашего но они также имеют свой собственный файл "json", который необходимо поддерживать отдельно.
-
С TS2. * теперь вы можете получать зависимости определения с помощью "npm". Поэтому вместо использования отдельной библиотеки cli, такой как tsd или типизация, теперь вы можете просто использовать:
npm i @types/{LIB}
таким образом, все зависимости управляются с помощью package.json, и вы можете легко устранить необходимость использования другого файла "json" для поддержки в вашем проекте.
-
-
'types' - это фактические имена библиотек, которые будут найдены в typeRoot.
-
так что скажем, у вас есть настройка по умолчанию для typeRoots, которая будет выглядеть примерно так:
"typeRoots": [ "./node_modules/@types" ]
-
скажем, теперь вы хотите использовать жасмин в качестве тестовой среды для своего проекта, поэтому у вас есть ваша папка типаRoot, все, что вы сейчас делаете, выполняется:
npm i @types/jasmine --save-dev
-
после того, как пакет определения установлен, вам просто нужно настроить свойство 'types' в 'tsconfig.json' следующим образом:
"types": [ "core-js", "jasmine", "requirejs", "chance" ]
-
В заключение, в основном вы говорите TS-компилятору следующее:
typeRoots: вам нужно искать типизацию в этих папках. types: В одной из приведенных выше папок вы найдете определения для этих фреймворков (подпапок).
Итак, используя описанный выше сценарий, и если мы добавим еще один корень:
"typeRoots": [
"./node_modules/@types",
"./custom_definitions"
],
"types": [
"jasmine",
]
Теперь TS будет искать файлы определений в
./node_modules/@types/jasmine
или
./custom_definitions/jasmine
Надеюсь, это поможет!