TypeScript 接口和TypeScript类

11 篇文章 1 订阅

目录

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

interface onePerson {
    personName: string,
    personPwd: number,
    speakTs: () => string
}
let oneUser: onePerson = {
    personName: "samxiaoguai",
    personPwd: 123,
    speakTs: (): string => { return "Hello Ts" }
}
console.log(oneUser.personName)
console.log(oneUser.personPwd)
console.log(oneUser.speakTs())
// samxiaoguai
// 123
// Hello Ts

2.联合类型和接口

在接口中使用联合类型

interface twoPerson {
    personName: string;
    personPwd: string[] | number | (() => number);
}
let oneUser1: twoPerson = { personName: "test1", personPwd: 1 };
console.log(oneUser1)  //{ personName: 'test1', personPwd: 1 }
let oneUser2: twoPerson = { personName: "test1", personPwd: ["1", "2"] };
console.log(oneUser2)  //{ personName: 'test1', personPwd: 1 }
let oneUser3: twoPerson = { personName: "test1", personPwd: () => { return 1; } }; 
console.log(oneUser3) //{ personName: 'test1', personPwd: [Function: personPwd] }
let returnPersonPwd:any = oneUser3.personPwd;
console.log(returnPersonPwd()) //1

3.接口和数组

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

interface strlist {
    [index: number]: string
}
let list1: strlist = ["a", "b", "c"]
console.log(list1) //[ 'a', 'b', 'c' ]

interface numlist {
    [index: string]: number
}
let list2: numlist = {};
list2["a"] = 1  
console.log(list2) //{ a: 1 }

4.接口继承

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

interface personName {
    personName: string
}
interface person3 extends personName {
    personPwd: number
} 
let oneUser4 = <person3>{}; 
oneUser4.personName = "samxiaoguai";
oneUser4.personPwd = 123;
console.log(oneUser4) //{ personName: 'samxiaoguai', personPwd: 123 }

(1)单继承

interface personName {
    personName: string
}
interface person3 extends personName {
    personPwd: number
} 
let oneUser4 = <person3>{}; 
oneUser4.personName = "samxiaoguai";
oneUser4.personPwd = 123;
console.log(oneUser4) //{ personName: 'samxiaoguai', personPwd: 123 }

(2)多继承

interface personName {
    personName: string
}
interface personPwd {
    personPwd: number
}
interface person4 extends personName, personPwd { };
let oneUser5: person4 = { personName: "samxiiaoguai", personPwd: 123 }
console.log(oneUser5) //{ personName: 'samxiiaoguai', personPwd: 123 }

二、TypeScript 类

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

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

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

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

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

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

class onePersonClass {
    // 字段 
    name: string;
    // 构造函数 
    constructor(name: string) {
        this.name = name
    }
    // 方法 
    userName(): void {
        console.log("名称为:" + this.name)
    }
}
let onePeopleObj = new onePersonClass("samxiaoguai")
console.log(onePeopleObj.name);//samxiaoguai
console.log(onePeopleObj.userName()); //名称为:samxiaoguai

2.TypeScript 类继承

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

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

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

class onePersonClass2 extends onePersonClass {
    userName(): void {
        console.log("名称为:" + this.name)
    }

}
let onePeopleObj2 = new onePersonClass("samxiaoguai")
console.log(onePeopleObj2.name);//samxiaoguai
console.log(onePeopleObj2.userName()); //名称为:samxiaoguai

class onePersonClass3 extends onePersonClass2 {
    userName(): void {
        console.log("名称为:" + this.name)
    }

}
let onePeopleObj3 = new onePersonClass("samxiaoguai")
console.log(onePeopleObj3.name);//samxiaoguai
console.log(onePeopleObj3.userName()); //名称为:samxiaoguai

3.TypeScript 类继承的方法重写

class fatherClass {
    fatherStr: string;
    // 构造函数 
    constructor(fatherStr: string) {
        this.fatherStr = fatherStr
    }
    doPrint(): void {
        console.log("父类的 doPrint() 方法。")
    }
}
class childClass extends fatherClass {
    doPrint(): void {
        super.doPrint() // 调用父类的函数
        console.log("子类的 doPrint()方法。")
    }
}
let oneObj = new childClass("fatherS");
console.log(oneObj.doPrint());
//  父类的 doPrint() 方法。
// 子类的 doPrint()方法。

4.TypeScript 类static 关键字

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

class staticCalss {
    static staticname: string;
    static disp(): void {
        console.log("name:"+staticCalss.staticname)
    }
}
staticCalss.staticname = "samxiaoguai"
console.log(staticCalss.staticname) //samxiaoguai
console.log(staticCalss.disp()) //name:samxiaoguai

5.TypeScript  instanceof 运算符

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

class insCalss{ } 
class noinsCalss{ } 
let obj = new insCalss() 
let isInsCalss = obj instanceof insCalss; 
console.log(isInsCalss);
isInsCalss = obj instanceof noinsCalss; 
console.log(isInsCalss);
// true
// false

7.TypeScript 访问控制修饰符

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

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

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

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

class encapsulateClass {
    str1: string = "hello"
    private str2: string = "ts"
    protected str3: string = "ts"
    doPrint(): void {
        console.log("str2:" + this.str2);
        console.log("str3:" + this.str3);

    }
}

let encapsulateobj = new encapsulateClass()
console.log(encapsulateobj.str1)     // 可访问 
console.log(encapsulateobj.doPrint())
// console.log(encapsulateobj.str3)     // 编译错误  属性“str3”受保护,只能在类“encapsulateClass”及其子类中访问
// console.log(encapsulateobj.str2)   // 编译错误, str2 是私有的
// hello
// str2:ts
// str3:ts

8.TypeScript 类和接口

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

interface oneInter {
    num: number
}
class oneInterCalss implements oneInter {
    num: number
    name: string
    constructor(num: number, name: string) {
        this.name = name
        this.num = num
    }
}
let objInter = new oneInterCalss(666, "samxiaoguai")
console.log(objInter) //oneInterCalss { name: 'samxiaoguai', num: 666 }

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

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
TypeScript 中,接口是两个重要的概念,用于面向对象编程和定义对象的结构。下面是关于 TypeScript接口的一些重要信息: 1. (Classes): - 是对象的蓝图,用于定义对象的属性和方法。 - 使用 `class` 关键字来定义一个,并使用构造函数来初始化的实例。 - 可以使用 `public`、`private` 和 `protected` 访问修饰符来控制成员的可见性。 - 可以使用 `extends` 关键字来实现之间的继承。 - 可以包含属性、方法和构造函数。 以下是一个使用 TypeScript 定义和使用的示例: ```typescript class Person { private name: string; constructor(name: string) { this.name = name; } public greet() { console.log(`Hello, ${this.name}!`); } } const person = new Person("John"); person.greet(); // 输出:Hello, John! ``` 2. 接口(Interfaces): - 接口用于定义对象的结构或的契约,并且在 TypeScript 中被广泛用于型检查和型推断。 - 使用 `interface` 关键字来定义一个接口,并在接口中定义属性和方法的签名。 - 接口可以被实现(使用 `implements` 关键字)或对象使用(使用 `:` 进行型注解)。 - 接口可以继承其他接口,以便组合多个接口的结构。 - 接口的属性可以是可选的,使用 `?` 来标记。 以下是一个使用 TypeScript 定义和使用接口的示例: ```typescript interface Shape { color: string; area(): number; } class Circle implements Shape { color: string; radius: number; constructor(color: string, radius: number) { this.color = color; this.radius = radius; } area() { return Math.PI * this.radius * this.radius; } } const circle: Shape = new Circle("red", 5); console.log(circle.area()); // 输出:78.53981633974483 ``` 通过使用接口,你可以更好地组织和定义你的代码,并在编译时进行型检查,以减少错误并提高代码的可维护性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值