TypeScript的interface、type、class——泰联病从口入
先看效果
type 和 interface 有什么异同?
1.interface侧重于描述数据结构,type侧重于描述类型
-
interface A{
-
name:string;
-
}
-
type B = 'bb'|'cc'
2.都可以描述一个对象或者函数
-
interface user {
-
name: string;
-
age: number
-
}
-
interface setUser {
-
(name: string, age: number): void
-
}
-
-
type hoster = {
-
name: string;
-
age: number;
-
}
-
type setHoster = (name: string, age: number) => void
3.都可以使用extends,两两组合,四种情况
-
interface extends type
-
interface extends interface
-
type extends interface
-
type extends type
4.type专属功能-联合类型
-
// type专属 联合类型
-
interface Dog {
-
wang()
-
}
-
interface Cat {
-
miao()
-
}
-
type Pet = Dog | Cat
-
type PetList = [Dog,Cat]
5、interface 能够声明合并
-
interface User {
-
name: string
-
age: number
-
}
-
-
interface User {
-
sex: string
-
}
-
-
/*
-
User 接口为 {
-
name: string
-
age: number
-
sex: string
-
}
-
*/
为什么说如果不清楚什么时候用interface/type,能用 interface 实现,就用 interface , 如果不能就用 type
总之,大多数时候,定义用interface,修改,联合等用 type。
Typescript 中 interface 和 class 的区别?
interface: 接口只负责声明成员变量类型,不作具体实现。
class:类既声明成员变量类型并实现。
interface是什么?
在OOP语言中,接口(Interfaces)是一个很重要的概念,它是对行为的抽象,而具体如何行动须要由类(classes)去实现(implement)。
TypeScript 中的接口是一个很是灵活的概念,除了可用于对类的一部分行为进行抽象之外,也经常使用于对「对象的形状(Shape)」进行描述。
-
interface Person {
-
name: string;
-
age: number;
-
}
上述例子就是一个最简单的接口,分别有两个属性分别叫作name和age,对应的值是一个字符串和一个数字。利用接口约束了传入变量的内容,当你不遵照这个约定时,typescript就会抛出一个错误。
Class是什么?
传统方法中,JavaScript 经过构造函数实现类的概念,经过原型链实现继承。而在 ES6 中,咱们终于迎来了 class。TypeScript 除了实现了全部 ES6 中的类的功能之外,还添加了一些新的用法。(今天只讲述类与interface却别,具体类的其余特性可参考官方)
-
//类Person
-
class Person {
-
name: string;
-
age: number;
-
constructor(name: string, age: number) {
-
this.name = name;
-
this.age = age;
-
}
-
};
-
-
//类充当接口使用,接口中只包含其中的实例属性和实例方法(constructor和static不在其中)
-
const person: Person = {
-
name: '张三',
-
age: 18
-
};
-
-
//接口继承类
-
interface Person1 extends Person{
-
sex: string,
-
printName() : void
-
};
-
-
const person1: Person1 = {
-
name: '张三',
-
age: 18,
-
sex: '男',
-
printName() {
-
console.log(this.name)
-
}
-
};
-
-
//类实现接口
-
class Person2 implements Person1 {
-
name: string;
-
age: number;
-
sex: string;
-
email: string;
-
printName() {
-
console.log(this.name)
-
};
-
}
总结
Typescript中声明class,实际上,除了会建立一个类以外,同时也会建立一个同名的interface(同名的interface只包含其中的实例属性和实例方法)。因此class既能够看成类来使用,也能够看成interface来使用
这篇好文章是转载于:学新通技术网
- 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
- 本站站名: 学新通技术网
- 本文地址: /boutique/detail/tanhihbjie
-
photoshop保存的图片太大微信发不了怎么办
PHP中文网 06-15 -
photoshop扩展功能面板显示灰色怎么办
PHP中文网 06-14 -
word里面弄一个表格后上面的标题会跑到下面怎么办
PHP中文网 06-20 -
TikTok加速器哪个好免费的TK加速器推荐
TK小达人 10-01 -
《学习通》视频自动暂停处理方法
HelloWorld317 07-05 -
excel图片置于文字下方的方法
PHP中文网 06-27 -
Android 11 保存文件到外部存储,并分享文件
Luke 10-12 -
微信提示登录环境异常是什么意思原因
PHP中文网 04-09 -
微信运动停用后别人还能看到步数吗
PHP中文网 07-22 -
微信人名旁边有个图标有什么用
PHP中文网 03-11