TS中的import
JavaScript 中有多種 export 的方式,而 TypeScript 中針對這種情況做了多種 import 語法。
// commonjs 模塊
import * as xx from 'xx'
// es6 模塊
import xx from 'xx'
// commonjs 模塊,類型聲明為 export = xx
import xx = require('xx')
// 沒有類型聲明,默認導入 any 類型
const xx = require('xx')
- import * as xx from 'xx' 的語法來一般都是用來導入使用 module.exports 導出的模塊。
import * as path from 'path'
import xx from 'xx' 默認情況下,import xx from 'xx' 的語法只適用于 ECMAScript 6 的 export default 導出
import xx = require('xx') import xx = require('xx') 是用來導入 commonjs 模塊的庫,特殊的地方在于這個庫的類型聲明是 export = xx 這種方式導出的
const xx = require('xx') 當一個模塊沒有類型聲明文件的時候,可以使用 commonjs 原始的 require() 方式來導入模塊,這樣會默認該模塊為 any。
聲明文件
如果ts模塊不存在聲明文件,那么只能用最后一種方式進行引入。
否則需要建立聲明文件。
如果聲明文件是通過 tsc 自動生成的,那么無需做任何其他配置,只需要把編譯好的文件也發(fā)布到 npm 上,使用方就可以獲取到類型提示了。
如果是手動寫的聲明文件,那么需要滿足以下條件之一,才能被正確的識別:
- 給 package.json 中的 types 或 typings 字段指定一個類型聲明文件地址
- 在項目根目錄下,編寫一個 index.d.ts 文件
- 針對入口文件(package.json 中的 main 字段指定的入口文件),編寫一個同名不同后綴的 .d.ts 文件