2016-09-23 4 views
4

Пока я просматривал документацию Angular2, я набрал код ниже here.Импорт против требуемого в машинописном тексте

SRC/polyfills.ts

import 'core-js/es6'; 
import 'core-js/es7/reflect'; 
require('zone.js/dist/zone'); 

if (process.env.ENV === 'production') { 
// Production 
} else { 
// Development 
Error['stackTraceLimit'] = Infinity; 
require('zone.js/dist/long-stack-trace-zone'); 
} 

В приведенном выше коде мы можем видеть, что есть оба import и require заявления.

«core-js» и «zone.js» - это оба узла.

Мой вопрос: почему import используется для core-js и require для «zone.js», есть ли какие-либо конкретные причины для этого?

ответ

2

С помощью TypeScript import можно использовать, если для модуля имеется файл декларации (см. Declaration Files in basarat's book).

Если файл декларации отсутствует, компилятор TypeScript не знает, существует ли модуль, поэтому вам нужно использовать require, вместо которого отсутствует проверка компиляции.

+0

Я не уверен, что это правильно, потому что я заметил, что для «core-js/es7/reflect» существует только файл .js, нет файла .ts или .d.ts. – refactor

+0

. По ссылке, которую вы предоставили , прямо вверху, посмотрите в разделе «typings.json». Типики для core-js были включены, что даст файлы .d.ts :) –

+1

zone.js теперь включает файл .d.ts и может быть импортирован с помощью 'import' – danwellman

Смежные вопросы