TypeScrtipt 中的模块化

TypeScript模块化实战指南
本文详细介绍了在TypeScript中实现模块化的多种方式,包括统一导出与解构导入、单独导出、对象导出、默认导出、混合导入以及export和import的结合使用。通过具体的代码示例展示了如何在不同场景下进行模块间的交互,帮助开发者更好地理解和应用TypeScript的模块系统。

TypeScrtipt 中的模块化

  • 目录结构

    在这里插入图片描述

  • 首先初始化项目:

    // 在控制台输入 npm init 选择相应的选项(一直回车)
    npm init 
    
  • 局部安装typescript

    // 在控制台输入
    npm i typescrtipt
    
  • 设置自动编译typescript

    // 控制台输入 
    npm i ts-node-dev --save-dev
    
    • packages.json中添加脚本

      {
        "name": "demo",
        "version": "1.0.0",
        "description": "",
        "main": "index.js",
        "scripts": {
          "start": "ts-node-dev --respawn --transpile-only index.ts"
        },
        "author": "",
        "license": "ISC",
        "dependencies": {
          "typescript": "^4.7.2"
        },
        "devDependencies": {
          "ts-node-dev": "^2.0.0"
        }
      }
      
    • 在终端中使用npm start启动

  • 新建文件夹src

    • 文件夹src下面新建文件夹模块化
    • 在文件夹模块化下面新建文件foo.tsmian.ts
  • 在根目录下新建文件index.ts作为入口文件

    import "./src/模块化/main";
    
  • ts模块化情况一(统一导出,解构导入)

    • src文件夹下面的模块化文件夹下面的foo.ts

      const username = "admin";
      
      const sum = (a: number, b: number): number => {
        return a + b;
      };
      
      // 统一导出
      export { sum, username };
      
    • src文件夹下面的模块化文件夹下面的main.ts

      import { username, sum} from "./foo";
      
      console.log(username);
      console.log(sum(10, 20));
      
    • 打印结果展示

      在这里插入图片描述

  • ts模块化情况二(单独导出,解构导入)

    • src文件夹下面的模块化文件夹下面的foo.ts

      // 单独导出
      export const sayHello = (name: string): void => {
        console.log(name);
      };
      
    • src文件夹下面的模块化文件夹下面的main.ts

      import { sayHello } from "./foo";
      
      sayHello("张三");
      
    • 打印结果展示

      在这里插入图片描述

  • ts模块化情况三(统一或者单独导出)作为一个对象

    • src文件夹下面的模块化文件夹下面的foo.ts

      const username = "admin";
      
      const sum = (a: number, b: number): number => {
        return a + b;
      };
      
      // 统一导出
      export { sum, username };
      
      // 单独导出
      export const sayHello = (name: string): void => {
        console.log(name);
      };
      
    • src文件夹下面的模块化文件夹下面的main.ts

      // 起一个别名 foo
      import * as foo from "./foo";
      
      console.log(foo);
      console.log(foo.username);
      foo.sayHello("张三");
      
    • 打印结果展示

      在这里插入图片描述

  • ts模块化情况四:默认导出(一个文件中只能有一个默认导出)

    • src文件夹下面的模块化文件夹下面的foo.ts

      // 默认导出
      export default function () {
        console.log("默认导出");
      }
      
    • src文件夹下面的模块化文件夹下面的main.ts

      import a from "./foo";
      
      a();
      
    • 打印结果展示

      在这里插入图片描述

  • ts模块化情况五:一起导入默认导出的和统一(单独)导出的

    • src文件夹下面的模块化文件夹下面的foo.ts

      const username = "admin";
      
      const sum = (a: number, b: number): number => {
        return a + b;
      };
      
      // 统一导出
      export { sum, username };
      
      // 单独导出
      export const sayHello = (name: string): void => {
        console.log(name);
      };
      
      // 默认导出
      export default function () {
        console.log("默认导出");
      }
      
    • src文件夹下面的模块化文件夹下面的main.ts

      import a, { username, sum, sayHello } from "./foo";
      
      a();
      console.log(username);
      console.log(sum);
      sayHello("张三");
      
    • 打印结果展示

      在这里插入图片描述

  • ts模块化情况六:exportimport结合使用

    • 创建新的目录结构

    • 目录结构展示

      在这里插入图片描述

    • formatDate.ts

      /**
       * 格式化时间
       * @param date
       * @returns 日期
       */
      export const formatDate = (date: Date): string => {
        return date.toLocaleDateString();
      };
      
    • formatString.ts

      export const formatString = (a: any) => {
        return a.toString();
      };
      
    • math.ts

      export const random = () => {
        return Math.random();
      };
      
    • 模块二文件夹里面的index.ts中(做统一导出)

      export * from "./formatDate";
      export * from "./formatString";
      export * from "./math";
      
    • 在根目录下的index.ts中(做导入)

      import { formatDate, formatString, random } from "./src/模块化2/index";
      
      console.log(formatDate(new Date()));
      
      console.log(formatString(10));
      
      console.log(random());
      
    • 打印结果展示

      在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值