小言_互联网的博客

TypeScript 接口和TypeScript类

324人阅读  评论(0)

目录

一、TypeScript 接口

1.TypeScript 接口的定义和简单使用

2.联合类型和接口

3.接口和数组

4.接口继承

二、TypeScript 类

1.TypeScript 类的定义和简单使用

2.TypeScript 类继承

3.TypeScript 类继承的方法重写

4.TypeScript 类static 关键字

5.TypeScript  instanceof 运算符

7.TypeScript 访问控制修饰符

8.TypeScript 类和接口


一、TypeScript 接口

1.TypeScript 接口的定义和简单使用

TypeScript 接口是一系列抽象方法的声明,是方法特征的集合,方法本身是抽象的,需要由具体的类去实现,然后第三方就可以通过这组抽象方法调用,让具体的类执行具体的方法。


  
  1. interface onePerson {
  2. personName: string,
  3. personPwd: number,
  4. speakTs: () => string
  5. }
  6. let oneUser: onePerson = {
  7. personName: "samxiaoguai",
  8. personPwd: 123,
  9. speakTs: (): string => { return "Hello Ts" }
  10. }
  11. console. log(oneUser. personName)
  12. console. log(oneUser. personPwd)
  13. console. log(oneUser. speakTs())
  14. // samxiaoguai
  15. // 123
  16. // Hello Ts

2.联合类型和接口

在接口中使用联合类型


  
  1. interface twoPerson {
  2. personName: string;
  3. personPwd: string[] | number | ( () => number);
  4. }
  5. let oneUser1: twoPerson = { personName: "test1", personPwd: 1 };
  6. console. log(oneUser1) //{ personName: 'test1', personPwd: 1 }
  7. let oneUser2: twoPerson = { personName: "test1", personPwd: [ "1", "2"] };
  8. console. log(oneUser2) //{ personName: 'test1', personPwd: 1 }
  9. let oneUser3: twoPerson = { personName: "test1", personPwd: () => { return 1; } };
  10. console. log(oneUser3) //{ personName: 'test1', personPwd: [Function: personPwd] }
  11. let returnPersonPwd: any = oneUser3. personPwd;
  12. console. log( returnPersonPwd()) //1

3.接口和数组

接口中可以将数组的索引值和元素设置为不同类型,索引值可以是数字或字符串。


  
  1. interface strlist {
  2. [ index: number]: string
  3. }
  4. let list1: strlist = [ "a", "b", "c"]
  5. console. log(list1) //[ 'a', 'b', 'c' ]
  6. interface numlist {
  7. [ index: string]: number
  8. }
  9. let list2: numlist = {};
  10. list2[ "a"] = 1
  11. console. log(list2) //{ a: 1 }

4.接口继承

接口可以通过继承其他接口来扩展自己,关键字使用extends


  
  1. interface personName {
  2. personName: string
  3. }
  4. interface person3 extends personName {
  5. personPwd: number
  6. }
  7. let oneUser4 = <person3>{};
  8. oneUser4. personName = "samxiaoguai";
  9. oneUser4. personPwd = 123;
  10. console. log(oneUser4) //{ personName: 'samxiaoguai', personPwd: 123 }

(1)单继承


  
  1. interface personName {
  2. personName: string
  3. }
  4. interface person3 extends personName {
  5. personPwd: number
  6. }
  7. let oneUser4 = <person3>{};
  8. oneUser4. personName = "samxiaoguai";
  9. oneUser4. personPwd = 123;
  10. console. log(oneUser4) //{ personName: 'samxiaoguai', personPwd: 123 }

(2)多继承


  
  1. interface personName {
  2. personName: string
  3. }
  4. interface personPwd {
  5. personPwd: number
  6. }
  7. interface person4 extends personName, personPwd { };
  8. let oneUser5: person4 = { personName: "samxiiaoguai", personPwd: 123 }
  9. console. log(oneUser5) //{ personName: 'samxiiaoguai', personPwd: 123 }

二、TypeScript 类

1.TypeScript 类的定义和简单使用

TypeScript类描述了所创建的对象共同的属性和方法

定义类的关键字为 class,后面紧跟类名,类主要包含以下几个模块(类的数据成员):

(1)字段 − 字段是类里面声明的变量。字段表示对象的有关数据。

(2)构造函数 − 类实例化时调用,可以为类的对象分配内存。

(3)方法 − 方法为对象要执行的操作。


  
  1. class onePersonClass {
  2. // 字段
  3. name: string;
  4. // 构造函数
  5. constructor( name: string) {
  6. this. name = name
  7. }
  8. // 方法
  9. userName(): void {
  10. console. log( "名称为:" + this. name)
  11. }
  12. }
  13. let onePeopleObj = new onePersonClass( "samxiaoguai")
  14. console. log(onePeopleObj. name); //samxiaoguai
  15. console. log(onePeopleObj. userName()); //名称为:samxiaoguai

2.TypeScript 类继承

TypeScript 支持继承类,即我们可以在创建类的时候继承一个已存在的类,这个已存在的类称为父类,继承它的类称为子类。

类继承使用关键字 extends,子类除了不能继承父类的私有成员(方法和属性)和构造函数,其他的都可以继承。

TypeScript 一次只能继承一个类,不支持继承多个类,但 TypeScript 支持多重继承(A 继承 B,B 继承 C)。


  
  1. class onePersonClass2 extends onePersonClass {
  2. userName(): void {
  3. console. log( "名称为:" + this. name)
  4. }
  5. }
  6. let onePeopleObj2 = new onePersonClass( "samxiaoguai")
  7. console. log(onePeopleObj2. name); //samxiaoguai
  8. console. log(onePeopleObj2. userName()); //名称为:samxiaoguai
  9. class onePersonClass3 extends onePersonClass2 {
  10. userName(): void {
  11. console. log( "名称为:" + this. name)
  12. }
  13. }
  14. let onePeopleObj3 = new onePersonClass( "samxiaoguai")
  15. console. log(onePeopleObj3. name); //samxiaoguai
  16. console. log(onePeopleObj3. userName()); //名称为:samxiaoguai

3.TypeScript 类继承的方法重写


  
  1. class fatherClass {
  2. fatherStr: string;
  3. // 构造函数
  4. constructor( fatherStr: string) {
  5. this. fatherStr = fatherStr
  6. }
  7. doPrint(): void {
  8. console. log( "父类的 doPrint() 方法。")
  9. }
  10. }
  11. class childClass extends fatherClass {
  12. doPrint(): void {
  13. super. doPrint() // 调用父类的函数
  14. console. log( "子类的 doPrint()方法。")
  15. }
  16. }
  17. let oneObj = new childClass( "fatherS");
  18. console. log(oneObj. doPrint());
  19. // 父类的 doPrint() 方法。
  20. // 子类的 doPrint()方法。

4.TypeScript 类static 关键字

static 关键字用于定义类的数据成员(属性和方法)为静态的,静态成员可以直接通过类名调用。


  
  1. class staticCalss {
  2. static staticname: string;
  3. static disp(): void {
  4. console. log( "name:"+staticCalss. staticname)
  5. }
  6. }
  7. staticCalss. staticname = "samxiaoguai"
  8. console. log(staticCalss. staticname) //samxiaoguai
  9. console. log(staticCalss. disp()) //name:samxiaoguai

5.TypeScript  instanceof 运算符

instanceof 运算符用于判断对象是否是指定的类型,如果是返回 true,否则返回 false。


  
  1. class insCalss{ }
  2. class noinsCalss{ }
  3. let obj = new insCalss()
  4. let isInsCalss = obj instanceof insCalss;
  5. console. log(isInsCalss);
  6. isInsCalss = obj instanceof noinsCalss;
  7. console. log(isInsCalss);
  8. // true
  9. // false

7.TypeScript 访问控制修饰符

TypeScript 中,可以使用访问控制符来保护对类、变量、方法和构造方法的访问。TypeScript 支持 3 种不同的访问权限。

(1)public(默认) : 公有,可以在任何地方被访问。

(2)protected : 受保护,可以被其自身以及其子类访问。

(3)private : 私有,只能被其定义所在的类访问。


  
  1. class encapsulateClass {
  2. str1: string = "hello"
  3. private str2: string = "ts"
  4. protected str3: string = "ts"
  5. doPrint(): void {
  6. console. log( "str2:" + this. str2);
  7. console. log( "str3:" + this. str3);
  8. }
  9. }
  10. let encapsulateobj = new encapsulateClass()
  11. console. log(encapsulateobj. str1) // 可访问
  12. console. log(encapsulateobj. doPrint())
  13. // console.log(encapsulateobj.str3) // 编译错误 属性“str3”受保护,只能在类“encapsulateClass”及其子类中访问
  14. // console.log(encapsulateobj.str2) // 编译错误, str2 是私有的
  15. // hello
  16. // str2:ts
  17. // str3:ts

8.TypeScript 类和接口

类可以实现接口,使用关键字 implements,并将其字段作为类的属性使用。


  
  1. interface oneInter {
  2. num: number
  3. }
  4. class oneInterCalss implements oneInter {
  5. num: number
  6. name: string
  7. constructor( num: number, name: string) {
  8. this. name = name
  9. this. num = num
  10. }
  11. }
  12. let objInter = new oneInterCalss( 666, "samxiaoguai")
  13. console. log(objInter) //oneInterCalss { name: 'samxiaoguai', num: 666 }

有问题可以在下面评论,我会为大家解答。


转载:https://blog.csdn.net/samxiaoguai/article/details/128404199
查看评论
* 以上用户言论只代表其个人观点,不代表本网站的观点或立场