0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

鸿蒙TypeScript学习第20天:【模块】

jf_46214456 来源:jf_46214456 作者:jf_46214456 2024-04-18 15:19 次阅读

1、TypeScript 模块

TypeScript 模块的设计理念是可以更换的组织代码。

模块是在其自身的作用域里执行,并不是在全局作用域,这意味着定义在模块里面的变量、函数和类等在模块外部是不可见的,除非明确地使用 export 导出它们。类似地,我们必须通过 import 导入其他模块导出的变量、函数、类等。

两个模块之间的关系是通过在文件级别上使用 import 和 export 建立的。

模块使用模块加载器去导入其它的模块。 在运行时,模块加载器的作用是在执行此模块代码前去查找并执行这个模块的所有依赖。 大家最熟知的JavaScript模块加载器是服务于 Node.js 的 CommonJS 和服务于 Web 应用的 Require.js。

此外还有有 SystemJs 和 Webpack。

模块导出使用关键字 export 关键字,语法格式如下:

// 文件名 : SomeInterface.ts 
export interface SomeInterface { 
   // 代码部分
}复制

要在另外一个文件使用该模块就需要使用 import 关键字来导入:

import someInterfaceRef = require("./SomeInterface");复制

实例

鸿蒙开发文档指导:[qr23.cn/AKFP8k]

搜狗高速浏览器截图20240326151450.png

IShape.ts 文件代码:

/// < reference path = "IShape.ts" / > 
export interface IShape { 
   draw(); 
}复制

Circle.ts 文件代码:

import shape = require("./IShape"); 
export class Circle implements shape.IShape { 
   public draw() { 
      console.log("Cirlce is drawn (external module)"); 
   } 
}复制

Triangle.ts 文件代码:

import shape = require("./IShape"); 
export class Triangle implements shape.IShape { 
   public draw() { 
      console.log("Triangle is drawn (external module)"); 
   } 
}复制

TestShape.ts 文件代码:

import shape = require("./IShape"); 
import circle = require("./Circle"); 
import triangle = require("./Triangle");  
 
function drawAllShapes(shapeToDraw: shape.IShape) {
   shapeToDraw.draw(); 
} 
 
drawAllShapes(new circle.Circle()); 
drawAllShapes(new triangle.Triangle());复制

使用 tsc 命令编译以上代码(AMD):

tsc --module amd TestShape.ts

得到以下 JavaScript 代码:

IShape.js 文件代码:

define(["require", "exports"], function (require, exports) { });

Circle.js 文件代码:

define(["require", "exports"], function (require, exports) {
   var Circle = (function () {
      function Circle() {
      }
      Circle.prototype.draw = function () {
         console.log("Cirlce is drawn (external module)");
      };
      return Circle;
   })();
   exports.Circle = Circle;
});复制

Triangle.js 文件代码:

define(["require", "exports"], function (require, exports) {
   var Triangle = (function () {
      function Triangle() {
      }
      Triangle.prototype.draw = function () {
         console.log("Triangle is drawn (external module)");
      };
      return Triangle;
   })();
   exports.Triangle = Triangle;
});复制

TestShape.js 文件代码:

define(["require", "exports", "./Circle", "./Triangle"], 
   function (require, exports, circle, triangle) {
   
   function drawAllShapes(shapeToDraw) {
      shapeToDraw.draw();
   }
   drawAllShapes(new circle.Circle());
   drawAllShapes(new triangle.Triangle());
});复制

使用 tsc 命令编译以上代码(Commonjs):

tsc --module commonjs TestShape.ts

得到以下 JavaScript 代码:

Circle.js 文件代码:

var Circle = (function () {
   function Circle() {
   }
   Circle.prototype.draw = function () {
      console.log("Cirlce is drawn");
   };
   return Circle;
})();
 
exports.Circle = Circle;复制

Triangle.js 文件代码:

var Triangle = (function () {
   function Triangle() {
   }
   Triangle.prototype.draw = function () {
      console.log("Triangle is drawn (external module)");
   };
   return Triangle;
})();
exports.Triangle = Triangle;复制

TestShape.js 文件代码:

var circle = require("./Circle");
var triangle = require("./Triangle");
 
function drawAllShapes(shapeToDraw) {
   shapeToDraw.draw();
}
drawAllShapes(new circle.Circle());
drawAllShapes(new triangle.Triangle());复制

输出结果为:

Cirlce is drawn (external module)
Triangle is drawn (external module)

审核编辑 黄宇

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 鸿蒙
    +关注

    关注

    55

    文章

    1651

    浏览量

    42128
收藏 人收藏

    评论

    相关推荐

    鸿蒙TypeScript入门学习第6天:【条件语句】

    条件语句用于基于不同的条件来执行不同的动作。 TypeScript 条件语句是通过一条或多条语句的执行结果(True 或 False)来决定执行的代码块。
    的头像 发表于 04-01 13:51 438次阅读
    <b class='flag-5'>鸿蒙</b><b class='flag-5'>TypeScript</b>入门<b class='flag-5'>学习</b>第6天:【条件语句】

    鸿蒙TypeScript学习第7天:【TypeScript 循环】

    有的时候,我们可能需要多次执行同一块代码。一般情况下,语句是按顺序执行的:函数中的第一个语句先执行,接着是第二个语句,依此类推。 编程语言提供了更为复杂执行路径的多种控制结构。
    的头像 发表于 04-02 14:28 450次阅读
    <b class='flag-5'>鸿蒙</b><b class='flag-5'>TypeScript</b><b class='flag-5'>学习</b>第7天:【<b class='flag-5'>TypeScript</b> 循环】

    鸿蒙TypeScript 开发学习第9天:【TypeScript Number】

    TypeScript 与 JavaScript 类似,支持 Number 对象。 Number 对象是原始数值的包装对象。
    的头像 发表于 04-07 18:02 450次阅读
    <b class='flag-5'>鸿蒙</b><b class='flag-5'>TypeScript</b> 开发<b class='flag-5'>学习</b>第9天:【<b class='flag-5'>TypeScript</b> Number】

    鸿蒙语言TypeScript学习第16天:【类】

    TypeScript 支持面向对象的所有特性,比如 类、接口等。
    的头像 发表于 04-15 09:29 483次阅读
    <b class='flag-5'>鸿蒙</b>语言<b class='flag-5'>TypeScript</b><b class='flag-5'>学习</b>第16天:【类】

    学习鸿蒙背后的价值?星河版开放如何学习

    需要有更多的鸿蒙人才;鸿蒙开发工程师也将会迎来爆发式的增长! 所以学习鸿蒙势在必行,而大部分人都能适合学鸿蒙。人群可以包括: 那
    发表于 02-22 20:55

    鸿蒙应用开发基础术语学习 轻应用

    开发者可以通过鸿蒙轻应用,通过点击关键词解锁详细解释的方式,方便快速了解鸿蒙的基础术语。可以独立作为一个应用发展,也可以作为各种应用中的一个模块。适合HarmonyOS开发者及潜在开
    发表于 05-19 18:33

    【触觉智能 Purple Pi OH 开发板体验】二、鸿蒙系统APP应用例程学习HDC使用学习

    两年开发鸿蒙APP也是使用的这两种语言进行开发。当下看TypeScript程序还能说勉强看懂,但是当下开发程序就没那个实力了,需要之后在抽时间学习。技术更新的也确实是快啊!!! 二、天气预报程序开发
    发表于 08-31 11:13

    华为p20可以升级鸿蒙

    华为p20可以升级鸿蒙吗?近日,华为鸿蒙操作系统正式推出,系统一发布,大家都目光都聚集在了鸿蒙系统上,有许多消费者都想体验一下HarmonyOS,那么华为p
    的头像 发表于 06-16 09:56 8062次阅读

    p20可以升级鸿蒙鸿蒙支持哪些设备

    2021年6月2日,华为公司在发布会上推出了几款搭载鸿蒙os的新品,还发布了一直话题不断的鸿蒙系统并在尾声的时候公布了百机焕新的计划,一共是分为四个阶段来进行升级,那么华为P20可以升级鸿蒙
    的头像 发表于 06-17 10:49 2w次阅读
    p<b class='flag-5'>20</b>可以升级<b class='flag-5'>鸿蒙</b>吗 <b class='flag-5'>鸿蒙</b>支持哪些设备

    华为p20怎么升级鸿蒙系统

    华为p20怎么升级鸿蒙系统?在6 月 2 日,华为正式推出了鸿蒙系统,使用过的用户称,鸿蒙系统的流畅度大于安卓,所以肯定很多使用华为手机的小伙伴都想升级
    的头像 发表于 07-01 14:38 9872次阅读
    华为p<b class='flag-5'>20</b>怎么升级<b class='flag-5'>鸿蒙</b>系统

    p20能升级鸿蒙吗 p20能用鸿蒙系统吗

    2021年6月2日华为鸿蒙系统2.0已正式上线,华为P20及P20 Pro用户都很好奇是否能升级鸿蒙系统2.0。那么华为P20及P
    的头像 发表于 07-06 11:43 1.2w次阅读
    p<b class='flag-5'>20</b>能升级<b class='flag-5'>鸿蒙</b>吗 p<b class='flag-5'>20</b>能用<b class='flag-5'>鸿蒙</b>系统吗

    p20 鸿蒙支持升级吗

      华为P20暂不支持升级鸿蒙系统,华为将分季度对不同机型进行鸿蒙OS系统更新推送。华为P20将会在2022年第一季度时可升级为鸿蒙系统,也
    的头像 发表于 07-08 10:21 3524次阅读

    快速了解TypeScript和JavaScript之间的差异

    如果我们同时考虑两者 ——TypeScript 与 JavaScript,那么每个 JavaScript 代码在 TypeScript 中都是有效的。这意味着 TypeScript 是 JavaScript 的超集。
    的头像 发表于 03-13 10:19 645次阅读

    TypeScript之父也搞大模型:推出TypeChat

    C# 和 TypeScript 之父 Anders Hejlsberg 今天宣布了全新的开源项目 ——TypeChat,它通过 AI 在自然语言和应用程序模式 (application schema),以及 API 之间构建了一座 “桥梁”,能用新颖有趣的方式使用 TypeScr
    的头像 发表于 07-24 09:27 583次阅读
    <b class='flag-5'>TypeScript</b>之父也搞大模型:推出TypeChat

    鸿蒙TypeScript入门学习第2天【TypeScript安装】

    本文介绍 TypeScript 环境的安装。 我们需要使用到 npm 工具安装,如果你还不了解 npm,可以参考我之前文档。
    的头像 发表于 03-27 15:22 195次阅读
    <b class='flag-5'>鸿蒙</b><b class='flag-5'>TypeScript</b>入门<b class='flag-5'>学习</b>第2天【<b class='flag-5'>TypeScript</b>安装】