TS学习笔记——模块

模块 module

模块:在自身的作用域里执行,不是在全局作用域中,若是外部想要使用需要导入导出。

好处:1、提高了代码的复用性   2、解决命名冲突  3、提高代码的可维护性

模块导入导出:export  (interface、class、变量、function)

                  exprot {a  as  b }  import  b   from

                  export defult   导入: import module from

                  export =      导入: import module = require("module")

模块化实现:1、立即执行函数,解决作用域问题 IFEE

                      2、AMD   依赖先加载,后使用

                       define(["require", "exports", "./mod"], function (require, exports, mod_1) {

                                exports.t = mod_1.something + 1;

                        });

                        3、CommonJS  nodejs端

                         let mod_1 = require("./mod"); exports.t = mod_1.something + 1;

                        4、UMD  CommonJS与AMD的整合,判断当前环境,什么环境执行什么代码

                        

                   5、ES Module 如上文所示

   CommonJS与ES module的区别

        1、导入导出方式不同 cjs: exports.a = A; let a = resuqire('./a')  ESM: export  import {} from

        2、cjs是同步导出,esm是异步导出

        3、cjs是值导出,esm是实时导出

        4、cjs 支持 ${} 动态导入,esm不支持

命名空间 namesapce

namespace A {}

全局命名空间 declare namespace A {}

模块与命名空间的区别

命名空间是全局命名空间下一个普通的对象,易于使用,但依赖关系混乱;

模块会把依赖放在依赖加载器上,依赖关系清晰,利于维护,更好的封闭性

模块解析

相对模块:在相对路径下去查找对应的ts、的d.ts

非相对模块:在tsconfig设置的baseUrl的路径下,从内层向外层查找

classic解析策略 (AMD | System | ES2015默认):查找ts、d.ts

node解析策略:查找ts、d.ts、package.json(mian)、index.ts、index.d.ts

声明合并

interface:可以合并、两个之间属性不可重复

enum: 可以合并,两者之间属性不可重复,且只能有一个第一个元素省略初始值

type:不可合并

class:不可合并

namespace: 可以合并,未导出的部分只在自己的命名空间中可以访问

装饰器

@expression

能够被附加到类声明方法, 访问符属性参数

多个装饰器:

        1、自上而下求值

        2、自内而外求解

mixins

三斜线指令

js文件类型检查

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,让我来回答你关于 TypeScript 中 Symbol 和模块的问题。 首先,Symbol 是 TypeScript 中的一种新的基本数据类型,它可以用来创建唯一的标识符。在 TypeScript 中,Symbol 主要有两种用法: 1. 作为对象属性的键值,用来表示一个对象属性的唯一标识符。 2. 作为一个类的静态属性或方法,用来表示该类的唯一标识符。 下面是一个使用 Symbol 作为对象属性键值的示例: ```typescript const key = Symbol('myKey'); const obj = { [key]: 'value' }; console.log(obj[key]); // 输出'value' ``` 在上面的代码中,我们使用 Symbol('myKey') 创建了一个新的 Symbol,然后将该 Symbol 作为对象 obj 的属性键值,并赋值为'value'。最后,我们通过 obj[key] 的方式来访问该属性,并输出了'value'。 另外,模块是 TypeScript 中的另一个重要概念,它用来组织和管理代码。在 TypeScript 中,模块可以使用 import 和 export 命令来进行导入和导出。下面是一个使用模块的示例: ```typescript // moduleA.ts export const num = 123; // moduleB.ts import { num } from './moduleA'; console.log(num); // 输出123 ``` 在上面的代码中,我们定义了一个名为 num 的常量,并将其导出。然后,在另一个模块中,我们使用 import 命令将 num 导入,并通过 console.log 输出了它的值。 这就是关于 TypeScript 中 Symbol 和模块的简单介绍,希望能对你有所帮助。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值