typescript和 java区别_typescript中interface和type的区别
相同点
都可以描述一个对象或者函数
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;
拓展(extends)与 交叉类型(Intersection Types)
interface 可以 extends, 但 type 是不允许 extends 和 implement 的,但是 type 缺可以通过交叉类型 实现 interface 的 extend 行为,并且两者并不是相互独立的,也就是说 interface 可以 extends type, type 也可以 与 interface 类型 交叉 。
虽然效果差不多,但是两者语法不同。
interface extends interface
interface Name {
name: string;
}
interface User extends Name {
age: number;
}
type 与 type 交叉
type Name = {
name: string;
}
type User = Name & { age: number };
interface extends type
type Name = {
name: string;
}
interface User extends Name {
age: number;
}
type 与 interface 交叉
interface Name {
name: string;
}
type User = Name & {
age: number;
}
区别
type 可以而 interface 不行
type 可以声明基本类型别名,联合类型,元组等类型
// 基本类型别名
type Name = string
// 联合类型
interface Dog {
wong();
}
interface Cat {
miao();
}
type Pet = Dog | Cat
// 具体定义数组每个位置的类型
type PetList = [Dog, Pet]
type 语句中还可以使用 typeof 获取实例的 类型进行赋值
/ 当你想获取一个变量的类型时,使用 typeof
let div = document.createElement('div');
type B = typeof div
其他骚操作
type StringOrNumber = string | number;
type Text = string | { text: string };
type NameLookup = Dictionary;
type Callback = (data: T) => void;
type Pair = [T, T];
type Coordinates = Pair;
type Tree = T | { left: Tree, right: Tree };
interface 可以而 type 不行
interface 能够声明合并
interface User {
name: string
age: number
}
interface User {
sex: string
}
/*
User 接口为 {
name: string
age: number
sex: string
}
*/
总结
一般来说,如果不清楚什么时候用interface/type,能用 interface 实现,就用 interface , 如果不能就用 type 。
ts中文官方文档:https://www.tslang.cn/docs/home.html
typescript和 java区别_typescript中interface和type的区别相关推荐
- TypeScript中interface 与 type的区别,你真的懂吗?
在写 ts 相关代码的过程中,总能看到 interface 和 type 的身影.它们的作用好像都一样的,相同的功能用哪一个都可以实现,也都很好用,所以也很少去真正的理解它们之间到底有啥区别, 分别在 ...
- 【Java】泛型中 extends 和 super 的区别?
<? extends T>和<? super T>是Java泛型中的"通配符(Wildcards)"和"边界(Bounds)"的概念. ...
- 【java】深入理解Java JVM虚拟机中init和clinit的区别
1.概述 转载并且补充:深入理解Java JVM虚拟机中init和clinit的区别 原创 之所以来转载一下,是因为,有个学弟问了这个问题 这个知识点,回顾起来应该是我看 深入理解Java JVM虚拟 ...
- 20200927:Java和Cpp中栈与队列的区别
Java和Cpp中栈与队列的区别 题目 思路与算法 代码实现 对比分析两种语言中栈和队列的区别 题目 1.225. 用队列实现栈 2.232. 用栈实现队列 3.155. 最小栈 思路与算法 三道简单 ...
- ajax的post跟get区别,Ajax中post与get的区别
get和post都是向服务器发送一种请求,只是发送机制不同 . 1. GET可以通过在请求URL上添加请求参数, 而POST请求则是作为HTTP消息的实体内容发送给WEB服务器. 2. get方式请求 ...
- TypeScript 里 interface 和 type 的区别
StackOverflow 上的讨论链接 Interface vs Type alias in TypeScript 2.7 Differences Between Type Aliases and ...
- Java中string与String区别_JAVA中String与StringBuffer的区别
JAVA中String与StringBuffer的区别 2009-12-3文字大小:大中小 在java中有3个类来负责字符的操作. 1.Character 是执行 单个字符操作的, 2.String ...
- java中的成员变量和局部变量的区别_java中成员变量与局部变量区别分析
本文实例分析了java中成员变量与局部变量区别.分享给大家供大家参考.具体分析如下: 成员变量:在这个类里定义的私有变量,属于这个类. 创建以及使用成员变量 public class Person { ...
- java long 区别_java中long和int的区别
java中long和int的区别 发布时间:2020-06-26 15:37:48 来源:亿速云 阅读:191 作者:Leah 这篇文章将为大家详细讲解有关java中long和int的区别,文章内容质 ...
最新文章
- AppBaseJs 类库 网上常用的javascript函数及其他js类库写的
- CTFshow 命令执行 web74
- rdp协议打开 windows_ubuntu客户端使用RDP协议连接windows服务器
- boost::math模块使用二项分布复制 NAG 库调用的测试程序
- SAP BTP 上使用 Mobile Back-End Tools(MBT)进行全栈开发的方法概述
- python选项卡中文详细说明_pycharm窗口选项卡管理
- 中国石油大学(华东)计算机科学与技术,2017年中国石油大学(华东)函授本科计算机科学与技术专业...
- 第一百八十四节,jQuery-UI,验证注册表单
- 可视化分析:洞见数据的秘诀
- Ubuntu E: Sub-process /usr/bin/dpkg returned an error code (1)
- python基础--函数1
- SPSS数据插补方法
- picsart旧版本_picsart 2016旧版本下载-picsart 2016版本下载v5.25.4 安卓中文版-2265安卓网...
- 中小型城市商业银行数字化转型实践(一)整体技术架构转型(双态IT)
- android硬盘加密方法,Android硬盘加密工具
- TopJUI Combobox onSelect 事件失效BUG
- 火影忍者ol HTML5,火影忍者OL-官方网站-腾讯游戏
- Python爬虫报错 ImportError: cannot import name Morsel
- 矩阵分析与应用-1.10-Hadamard积与Kronecker积
- $ 8 : gets函数与puts函数
热门文章
- windows永久添加路由
- html和css动画效果,css过渡和css动画的区别是什么?
- 微服务实现不同登陆_微服务网关——实现篇
- python接口编程_Python 中的面向接口编程
- python selenium-9 grid模式
- ASP.NET-EF基础知识
- 转载:.NET Memory Leak: XmlSerializing your way to a Memory Leak
- UI: 自定义 UISegmentedControl
- cocos2d里面如何实现MVC(一)
- 提升速度与精度,FedReg: 减轻灾难性遗忘加速联邦收敛(ICLR 2022)