Читая Краткое руководство по Angular 2, я наткнулся на этот раздел в разделе Конфигурация TypeScript:
Конфликты файлов при вводе
Компилятор TypeScript не допускает переопределения типа. Например, он выдает ошибку, если ему дано два определения для типа Promise.
Часто встречаются двойные определения. На самом деле инструмент типизации намеренно создает повторяющиеся наборы типизации (по причинам, которые лучше всего объясняются в другом месте). Посмотрите в структуре проекта папку typings, где мы должны найти что-то вроде:
typings
browser
ambient
es6-shim
es6-shim.d.ts
main
ambient
es6-shim
es6-shim.d.ts
browser.d.ts
main.d.ts
Типы es6-shim дублируются, а файлы browser.d.ts и main.d.ts имеют перекрывающееся содержимое.
Если я прочитаю информацию о типизации, там будет сказано:
Если вы создаете интерфейсный пакет, рекомендуется использовать typings/browser.d.ts. Типы браузера компилируются, следуя переопределениям полей браузера.
Вопросы:
Почему инструмент типизации намеренно создает повторяющиеся наборы типизации?
Почему рекомендуется использовать typings/browser.d.ts
для интерфейсных пакетов?
Я предполагаю, что поддержка поля browser
может создавать разные типы?
Если да, то что такое поле browser
и каким образом оно меняет типизацию?