type和interface与namespace和module

news/2025/2/22 2:57:03/文章来源:https://www.cnblogs.com/dingshaohua/p/18730504

type 和 interface 的区别

type 可以定义基本类型 也可以定义对象、数组、函数等

// 1. 定义基本类型
type StudentNameType = string; 
const studentName: StudentNameType = "张三";// 2.定义对象
type StudentType = { name: string;age: number;
}
const student: StudentType = {name: "张三",age: 18
}// 3. 定义数组
type Love = string[];
const love: Love = ["足球", "篮球"];// 4. 定义函数
type Add = (a: number, b: number) => number;
const add: Add = (x,y)=>x+y;

相比之下,interface 则不能定义基本类型。这是从定义类型这个基本功能上边!

初次之外还有其他不同,

  1. type 可以定义联合类型、交叉类型,而 interface 则是被继承和实现。
  2. type 不可以重复定义,而 interface 允许重复定义 并会被合并。

namespace 和 module 的区别

namespace 和 module 都可以用来组织代码,在编译之后代码是一样的,生成一个全局对象。

// 源码(namespace 可以 替换为 module)
namespace JSQUtilsNamespace { const name = "计算器工具";type Add = (a: number, b: number) => number;const add: Add = (x,y)=>x+y;console.log(add(1,2));
}
// 编译后
var JSQUtilsNamespace;
(function (JSQUtilsNamespace) {var name = "计算器工具";var add = function (x, y) { return x + y; };console.log(add(1, 2));
})(JSQUtilsNamespace || (JSQUtilsNamespace = {}));

虽然编译后的代码是一样的,但是两者的设计理念不同。

  • namespace:主要用于组织和封装代码,在同一个文件中将相关的代码分组。它是一种 内部模块化,并没有跨文件的依赖管理和导入导出功能。
  • module:module 用于 外部模块化,在多个不同文件之间共享代码。
// utils.ts
namespace Utils {export function add(x: number, y: number): number {return x + y;}export const name = "UtilsModule";
}const sum = Utils.add(1, 2); // 使用 namespace 中的功能
console.log(sum); // 输出 3
// utils.ts
module Utils {export function add(x: number, y: number): number {return x + y;}export const name = "UtilsModule";
}// app.ts
/// <reference path="utils.ts" />
const sum = Utils.add(1, 2); // 引用 utils.ts 中的 module
console.log(sum); // 输出 3

TypeScript 1.5 之后的变化
从 v1.5 开始,module 关键字被 废弃,并由 ES6 的 import/export 模块语法取代。现在的模块系统更符合现代 JavaScript 模块化标准。namespace 仍然作为TS组织代码的工具存在,但它不再是标准的模块系统。

不过 ts 还是保留了 declare module xxx 的这种特殊用法,主要用于 为外部模块或库声明类型。这种用法通常出现在 d.ts 文件 中,目的是 为 JavaScript 库或没有类型定义的第三方模块提供类型声明。这样 TypeScript 就能理解这些模块的接口,以便在项目中使用时提供类型检查。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/887887.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

开源一款串口舵机驱动扩展板-FreakStudio多米诺系列

总线舵机扩展板通过UART接口控制多个舵机,支持堆叠级联,最多连接4个扩展板。具备小尺寸设计、供电保护、全双工转半双工通信、稳定供电等特点,适用于多舵机控制系统。原文链接: FreakStudio的博客 摘要 总线舵机扩展板通过UART接口控制多个舵机,支持堆叠级联,最多连接4个…

Radialix 汉化

配置属性如下直接翻译文本即可留待后查,同时方便他人 联系我:renhanlinbsl@163.com

pycharm激活码免费分享2025最新

申明:本教程 Pycharm 破解补丁、激活码均收集于网络,请勿商用,仅供个人学习使用,如有侵权,请联系作者删除。若条件允许,希望大家购买正版 !PS: 本教程最新更新时间: 2025年2月1日~前言 笔者几乎试了网上几乎所有的 Pycharm 破解方案,废了好大气力,汇总了目前网上比较靠…

2025牛客寒假算法基础集训营第二场补题

H-一起画很大的圆 原题:H-一起画很大的圆 题意 给定一个矩形区域,在矩形的边界上找到 3 个整数点,使得过这 3 个点画出的圆面积最大,输出这三个点的坐标。 思路 三个不共线的点确定一个圆。 如果这三个点越接近一条直线,这个圆最大。 要使得圆尽可能大,那么这三个点尽量趋…

Level-729-易画行-复现

hgame 易画行复现此题是为了让⼤家稍微了解⼀下区块链。需要的知识是区块链的⼀些基本知识和ipfs的⼀些知识。这道题确实不难,可惜我没有认真学Blockchain,做这个题也没有投入精力,只是看了看,赛后9CVoid师傅给我写了一份解析,在此致谢! 题目给了一个Typescript文件 impo…

Python实现URL自动转二维码的高效方法

Python实现URL自动转二维码的高效方法 安装包依赖 pip install qrcode pip install pillow程序 import qrcode data = "https://www.cnblogs.com/tianwuyvlianshui/"#网址 img = qrcode.make(data) img.save("blogs.png")#生成图片命名运行后将在工程文件夹…

百万架构师第四十二课:Nginx:Nginx 的初步认识|JavaGuide

百万架构师系列文章阅读体验感更佳 原文链接:https://javaguide.net 公众号:不止极客 Nginx 的初步认识及配置 课程目标Nginx 在分布式架构中的应用分析 常用的 Web 服务器及差异 Nginx 的安装以及配置分析 Nginx 虚拟主机配置 详解 Location 的匹配规则背景 早期用 F5 做负载…

清华大学第5弹: 《DeepSeek与AI幻觉》 - 清华大学DeepSeek全套资料完整版 - 持续更新 - PDF免费下载

《DeepSeek与AI幻觉》报告探讨了AI幻觉的成因、评测方法及其影响,并以DeepSeek模型为例,分析数据偏差、知识固化等问题如何导致幻觉现象。报告还提出缓解策略,如联网搜索、提示词优化,并探讨AI幻觉在科学创新和艺术创作中的潜在价值。由清华大学新闻与传播学院与人工智能学…

win系统查看wife连接密码

win系统查看wife连接密码 1、win+R ,打开cmd 2、查看本机连过的WiFi名 netsh wlan show profiles3、获取WIFI密码 netsh wlan show profiles “WIFI名” key=clear密码如下

crypto做题记录

buuctf--wp Crypto 权限获得第一步: 看样子是windows系统存储用户密码哈希值的格式,密文一般存储在C:\Windows\System32\config\SAM文件中,只有具有管理员权限的用户才能通过特定工具(hashdump,pwdump)访问SAM文件,进行密码重置等操作。 下图表示用户名: 用户RID:500(用…

若依框架常见问题一

错误一:问题出在configuration和configLocation重复,如下图:修改方法也很简单,只要删除掉application.yml文件中的以下就可以解决:

Cypher Chapter 5: MECHANISED CRYPTOGRAPHY

Chapter 5: MECHANISED CRYPTOGRAPHY 恩格玛机示意图:谜题围绕恩格玛机展开。 PUZZLE1 Input/output: ABCDEFGHIJKLMNOPQRSTUVWXYZScrambler I: ABCDEFGHIJKLMNOPQRSTUVWXYZ UWYGADFPVZBECKMTHXSLRINQOJReflector: ABCDEFGHIJKLMNOPQRSTUVWXYZ YRUHQSLDPXNGOKMIEBFZCWVJATCiph…