深入了解Typescript中type和interface具体区别?

请添加图片描述

前言

新手刚开始学习 TypeScript 时,往往会对 type 和 interface 的使用场景和方式感到困惑。因此,本文旨在总结 type 和 interface 的概念和用法。

一、概念

  • type:类型别名

    • 概念:允许为一个或多个数据类型(例如 string、number 等)创建一个别名。

    • 举例

      • type dataType = number(为单个类型创建别名)
      • type dataType = number | string | tuple
  • interface:接口

    • 概念:定义参数或方法的数据类型。

二、两者的异同

1. 相同点

type 和 interface 都可用于描述对象或函数。

typescriptCopy code
// Interface
interface User {name: string;age: number;
}interface SetUser {(name: string, age: number): void;
}// Type
type User = {name: string;age: number;
}type SetUser = (name: string, age: number) => void;

2. 异同点

  • 类型别名可用于联合类型、元组类型、基本类型(原始值),而 interface 不支持。
typescriptCopy code
type PartialPointX = { x: number };
type PartialPointY = { y: number };type PartialPoint = PartialPointX | PartialPointY;
type Data = [PartialPointX, PartialPointY];
type Name = Number;let div = document.createElement('div');
type B = typeof div;
  • Interface 可多次定义并被视为合并所有声明成员,而 type 不支持。
typescriptCopy code
interface Point {x: number;
}
interface Point {y: number;
}
const point: Point = { x: 1, y: 2 };
  • Type 可以使用 in 关键字生成映射类型,但 interface 不支持。
typescriptCopy code
type Keys = 'firstname' | 'surname';type DudeType = {[key in Keys]: string;
};
const test: DudeType = {firstname: 'Pawel',surname: 'Grzybek',
};
  • 默认导出方式不同。
typescriptCopy code
export default interface Config {name: string;
}type Config2 = { name: string };
export default Config2;
  • Type 支持其他高级操作,如联合类型、映射类型、泛型、元组等。
typescriptCopy code
type StringOrNumber = string | number;
type Text = string | { text: string };
type NameLookup = Dictionary<string, Person>;
type Callback<T> = (data: T) => void;
type Pair<T> = [T, T];
type Coordinates = Pair<number>;![请添加图片描述](https://img-blog.csdnimg.cn/8c79f299ff56440bac9b4f1707f70e26.png)type Tree<T> = T | { left: Tree<T>, right: Tree<T> };

总结

通常情况下,如果能用 interface 实现,就使用 interface;如果不能,再考虑使用 type

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

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

相关文章

android studio app红叉无法编译

1.起源 今天前台小姐姐穿了一个白色的超短裙,和小姐姐聊了聊人生梦想,聊生活趣事,回到工位你马....报了一个这错误,无法运行了,明天就要打包测试了,顿时菊花一紧,急了一头汗,这你马咋回事,看了旁边的产品肥仔,迷着小眼露出了银建的笑容.开始排雷.... 意思就是说gradle初始化失…

WARNING: tokenization mismatch: 403 vs. 406. (ignored) LLaVa

LLaVa换BaiChuan底座报错 WARNING: tokenization mismatch: 403 vs. 406. (ignored) 解决 cd ~/.cache/huggingface/hub/models--baichuan-inc--Baichuan2-7B-Base/snapshots/0cc6a61c06cd0734270151109d07cf86ef0ace53 vim tokenizer_config.json把bos_token改成true&#…

(四) Python 使用Pandas生成日报

一、介绍 Pandas是Python中一个强大的数据处理库&#xff0c;它提供了许多功能强大的数据结构和数据分析工具。在本文中&#xff0c;我们将介绍Pandas的基本概念和如何使用它生成一个包含今天到未来20个工作日的日期列表的Excel文件。 Pandas提供了大量的数据结构和数据分析工…

RK3568平台 内存的基本概念

一.Linux的Page Cache page cache&#xff0c;又称pcache&#xff0c;其中文名称为页高速缓冲存储器&#xff0c;简称页高缓。page cache的大小为一页&#xff0c;通常为4K。在linux读写文件时&#xff0c;它用于缓存文件的逻辑内容&#xff0c;从而加快对磁盘上映像和数据的访…

评估大型语言模型:综述

论文地址&#xff1a;https://arxiv.org/pdf/2310.19736v2.pdf github&#xff1a; tjunlp-lab/awesome-llms-evaluation-… 发表团队&#xff1a;Tianjin University 摘要 将LLM评估划分三点&#xff1a;知识和能力评估、一致性评估和安全性评估。特定领域化评估benchmark评…

在jupyter中使用R

如果想在Jupyter Notebook中使用R语言&#xff0c;以下几个步骤操作可行&#xff1a; 1、启动Anaconda Prompt 2、进入R的安装位置&#xff0c;切换到R的安装位置&#xff1a;D:\Program Files\R\R-3.4.3\bin&#xff0c;启动R&#xff0c;具体代码操作步骤如下&#xff0c;在…

vue的rules验证失效,部分可以部分又失效的原因

vue的rules验证失效,部分可以部分又失效的原因 很多百度都有,但是我这里遇到了一个特别的,那就是prop没有写全,导致验证某一个失效 例子: 正常写法 el-form-item....多个省略<el-form-item label"胶币" prop"cost"><el-input v-model"form.…

1200*D. Same Differences(数学推公式)

Problem - 1520D - Codeforces 解析&#xff1a; 统计 a [ i ] - i #include<bits/stdc.h> using namespace std; #define int long long const int N2e55; int t,n,a[N]; signed main(){scanf("%lld",&t);while(t--){scanf("%lld",&n);…

AI芯片架构体系综述:芯片类型CPU\GPU\FPGA\ASIC以及指令集CSIS\RISC介绍

大模型的发展意味着算力变的越发重要&#xff0c;因为大国间科技竞争的关系&#xff0c;国内AI从业方在未来的一段时间存在着算力不确定性的问题&#xff0c;与之而来的是许多新型算力替代方案的产生。如何从架构关系上很好的理解计算芯片的种类&#xff0c;并且从计算类型、生…

【1106】记录

有关python环境&#xff01;&#xff01;&#xff01; 1、python解释器就是 python 3.7.2 之类的。 VSCode 是代码编辑器。 下图的每一个都是可选的python环境&#xff0c;Python 3.8.3&#xff08;‘base’&#xff09;是下载在电脑上的python环境&#xff08;下载miniConda时…

【LeetCode】318. 最大单词长度乘积

318. 最大单词长度乘积 难度&#xff1a;中等 题目 给你一个字符串数组 words &#xff0c;找出并返回 length(words[i]) * length(words[j]) 的最大值&#xff0c;并且这两个单词不含有公共字母。如果不存在这样的两个单词&#xff0c;返回 0 。 示例 1&#xff1a; 输入…

js深度学习(三)

循环 var i0 for(;i<10;){ console.log(i) i } while(i<10){ console.log(i) i } var i100; for(;i--;){ console.log(i) }2、引用值 typeof&#xff1a;number string boolean Object(object/array/null出现是为了指定为空对象/)undefined function typeof a >unde…

2021年电工杯数学建模B题光伏建筑一体化板块指数发展趋势分析及预测求解全过程论文及程序

2021年电工杯数学建模 B题 光伏建筑一体化板块指数发展趋势分析及预测 原题再现&#xff1a; 国家《第十四个五年规划和 2035 年远景目标纲要》中提出&#xff0c;将 2030 年实现“碳达峰”与 2060 年实现“碳中和”作为我国应对全球气候变暖的一个重要远景目标。光伏建筑一体…

如何对ppt文件设置修改权限?

PPT文件会应用在会议、演讲、课件等工作生活中&#xff0c;当我们制作好了PPT之后&#xff0c;保护内容防止在演示时出错是很重要的&#xff0c;那么如何将PPT文件设置成禁止修改模式呢&#xff1f;今天分享几个方法给大家。 方法一 将PPT文件直接保存或者另存为一份文件&…

微信小程序文件上传wx.uploadFile

网页版查看了一下负载要求是这样 wx.uploadFile({url: ${wx.getStorageSync(apiUrl)}//sysFileInfo/upload?token${wx.getStorageSync(token)}, // 仅为示例&#xff0c;非真实的接口地址filePath: files[0].url,name: file,formData: {secretFlag: Y },success: (res) > {…

【漏洞复现】Django _2.0.8_任意URL跳转漏洞(CVE-2018-14574)

感谢互联网提供分享知识与智慧&#xff0c;在法治的社会里&#xff0c;请遵守有关法律法规 文章目录 1.1、漏洞描述1.2、漏洞等级1.3、影响版本1.4、漏洞复现1、基础环境2、漏洞扫描3、漏洞验证 1.5、修复建议 说明内容漏洞编号CVE-2018-14574漏洞名称Django任意URL跳转漏洞漏洞…

力扣(LeetCode)容器装水问题

题目描述 给你 n 个非负整数 a1&#xff0c;a2&#xff0c;...&#xff0c;an&#xff0c;每个数代表坐标中的一个点 (i, ai) 。在坐标内画 n 条垂直线&#xff0c;垂直线 i 的两个端点分别为 (i, ai) 和 (i, 0)。找出其中的两条线&#xff0c;使得它们与 x 轴共同构成的容器可…

LeetCode|动态规划|392. 判断子序列、115. 不同的子序列、 583. 两个字符串的删除操作

目录 一、392. 判断子序列 1.题目描述 2.解题思路 3.代码实现(双指针解法) 4.代码实现&#xff08;动态规划解法&#xff09; 二、115. 不同的子序列 1.题目描述 2.解题思路 3.代码实现&#xff08;C语言版本&#xff09; 4.代码实现&#xff08;C版本&#xff09; …

PyTorch入门学习(十二):神经网络-搭建小实战和Sequential的使用

目录 一、介绍 二、先决条件 三、代码解释 一、介绍 在深度学习领域&#xff0c;构建复杂的神经网络模型可能是一项艰巨的任务&#xff0c;尤其是当您有许多层和操作需要组织时。幸运的是&#xff0c;PyTorch提供了一个方便的工具&#xff0c;称为Sequential API&#xff0c…

R语言piecewiseSEM结构方程模型在生态环境领域实践技术应用

结构方程模型&#xff08;Sructural Equation Modeling&#xff0c;SEM&#xff09;可分析系统内变量间的相互关系&#xff0c;并通过图形化方式清晰展示系统中多变量因果关系网&#xff0c;具有强大的数据分析功能和广泛的适用性&#xff0c;是近年来生态、进化、环境、地学、…