2016-09-23 54 views
4

當我經歷Angular2文檔,我在here碰到下面的代碼。導入VS需要打字稿

的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'); 
} 

在上面的代碼中我們可以看到,有兩個importrequire語句。

「核心-JS」 和 「zone.js」 均爲節點的模塊。

我的問題是;爲什麼用於核心js和require爲「zone.js」 import,有沒有這方面的任何具體的原因是什麼?

回答

2

隨着打字稿,import可以,如果有一個聲明文件(參見Declaration Files in basarat's book)爲模塊中使用。

如果沒有聲明文件,TypeScript編譯器不知道模塊是否存在,所以您需要使用require而不是編譯檢查。

+0

我不確定這是否正確,因爲我觀察到對於「core-js/es7/reflect」,只有.js文件存在,沒有.ts或.d.ts文件 – refactor

+0

在您提供的鏈接上,右頂部,放眼「typings.json」部分。核心-JS的分型已被列入,這將給.d.ts文件:) –

+1

zone.js現在所做的包括.d.ts文件,可以使用'import'進口 – danwellman