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 自动生成的,那么无需做任何其他配置,只需要把编译好的文件也发布到 npm 上,使用方就可以获取到类型提示了。
如果是手动写的声明文件,那么需要满足以下条件之一,才能被正确的识别:
- 给 package.json 中的 types 或 typings 字段指定一个类型声明文件地址
- 在项目根目录下,编写一个 index.d.ts 文件
- 针对入口文件(package.json 中的 main 字段指定的入口文件),编写一个同名不同后缀的 .d.ts 文件
网友评论