TS 中的模块化

模块语法

直接使用 Es6 的模块化语句就可以了

导入 ts 文件时,不要加后缀名,因为编译后是 js 文件,没有 .ts

编译结果中的模块化

可配置,直接配置 compolerOptions.module 就可配置编译结果中使用的编译模块语法

  • 如果编译结果的模块化标准是 ES6, 没有区别
  • 如果编译结果的模块化标准是 commonjs :导出的声明会变成 exports 的属性,***默认的导出会变成 exports 的 default 属性;***,在调用的时候会直接使用 exports.default 去调用

解决默认导入的错误

由于 commonjs 没有 export default 这种导出方法,但是 ts 在默认导入的时候,又会去 exports.default 去读取属性,所以如果去使用一些使用 commonjs 的库,

import fs from 'fs' // 这种称谓默认导入。
fs.readFileSync()
// 编译后
var fs_1 = require("fs");
fs_1["default"].readFileSync(); // 然后default上并没有这些属性,而应该直接使用 fs_1.xxx
// 解决办法
// 1.直接使用 commjs 的方式导入
const fs = require('fs')
// 2. 仍然使用 es6 module
import * as fs from 'fs'
import { readFileSync } from 'fs'
// 3. 配置 exModuleInterop: true

如何在 ts 中书写 commonjs 模块化

// 直接用本来的 commonjs 的语法,但是没办法使用类型检查。
// 使用类型检查
// 导出
export = {}
// 导入
import xxx = require('xxx')

模块解析

在 ts 中有两种模块解析策略

  1. classic: 经典(过时)
  2. node: node 解析策略
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值