TypeScript模块化

TypeScript 模块化

什么是模块化?

TypeScript 模块化是将复杂的程序拆分为互相独立且可重用的部分,以便更好地组织代码、降低耦合性、增加可维护性和可扩展性。TypeScript 提供了丰富的模块功能,使得开发者可以更加方便地使用模块化思想来构建和组织自己的代码。

在 TypeScript 中,模块是指一个独立的文件或代码块,它封装了一组相关的数据和函数,并提供了对外的接口。模块可以包含导出(export)的声明,允许其他模块引用并使用这些导出的内容。模块之间可以通过导入(import)语句建立关联,从而实现代码的组合和复用。

模块的类型

TypeScript 支持两种主要的模块类型:

  • ES 模块化(ESM):这是 TypeScript 的默认模块类型,它与 JavaScript 中的 ES 模块化标准一致。ESM 模块使用 export 关键字来导出成员,并使用 import 关键字来导入其他模块。
  • CommonJS 模块化:这是 Node.js 中常用的模块化标准。CommonJS 模块使用 exports 对象来导出成员,并使用 require() 函数来导入其他模块。

基本语法

ES
  • 模块导出export

//基础类型
export let t: number = 1;

//函数
let fun = function (name: string, age: number): void {
    console.log(`name:${name},age:${age}`);
}
export {fun};

//类
export class User2{
    name:string;
    age:number;
    address?:string;
    [propName: string]: any;//可以添加任意属性
    constructor(name:string,age:number){
        this.name=name;
        this.age=age;
    }

    sayHello(){
        console.log(`name:${this.name},age:${this.age}`);
    }
}


//类实例
let u2:User2=new User2('rose',18);
export default u2;

  • 模块导入import
//模块化导入
import {t,fun,User2,default as d} from './03Module_Export'
import d3 from './03Module_Export'//等同{default as d}
import * as d4 from './03Module_Export'

//基础类型
let t1:any=t;
t1='122';
console.log(t1);
//函数
fun('jack',12);
//类
let u=new User2('ck',12);
u.sayHello();
//类实例
d.name='rose2';
d3.name='rose3'
//d 和d3指向同一个实例。所以d和d3的name都是rose3;
d.sayHello();
d3.sayHello();

//通过 * as d4 导入所有并重命名
d4.fun('导入所有',15);
CommonJS
  • 模块导出export
let numberRegexp = /^[0-9]+$/;
class ZipCodeValidator {
    isAcceptable(s: string) {
        return s.length === 5 && numberRegexp.test(s);
    }
}
export = ZipCodeValidator;
  • 模块导入require
//CommonJs导入
import zip = require("./04Module_CommJS");
// Some samples to try
let strings = ["Hello", "98052", "101"];

// Validators to use
let validator = new zip();

// Show whether each string passed each validator
strings.forEach(s => {
  console.log(`"${ s }" - ${ validator.isAcceptable(s) ? "matches" : "does not match" }`);
});

模块的编译

TypeScript 模块需要经过编译才能转换为可执行的 JavaScript 代码。编译过程中,TypeScript 会将模块的类型信息保留下来,并生成相应的 JavaScript 代码。

可以使用 tsc 命令来编译 TypeScript 代码。例如,以下命令可以将 ModuleA.tsModuleB.ts 编译为 JavaScript 代码:

tsc ModuleA.ts ModuleB.ts

生成的 JavaScript 代码将位于与 TypeScript 源文件相同的目录中,但文件扩展名改为 .js。例如,ModuleA.ts 将编译为 ModuleA.jsModuleB.ts 将编译为 ModuleB.js

注意事项

  • 在 TypeScript 代码中,可以使用 /// <reference path="..." /> 注释来引用其他 TypeScript 模块。这有助于 TypeScript 编译器更好地理解代码结构和类型信息。
  • 在使用 CommonJS 模块化时,需要在项目根目录的 package.json 文件中添加 "type": "commonjs" 字段。
  • TypeScript 还支持其他一些模块化方案,例如 AMD 和 UMD。

引用

博文源代码https://github.com/chi8708/TypeScriptDemo/blob/main/Basic/04Module_Import.ts

有关 TypeScript 模块化的更多信息,请参阅以下资源:

  • 8
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值