ts中的class

本文探讨了 TypeScript 中的 class 建立在 ES6 的基础上,增加了 public、private 和 protected 三种访问修饰符,用于管理类中属性和方法的访问权限。public 为默认公开,private 限制在类内部访问,protected 允许子类访问。此外,还介绍了 readonly 修饰符用于创建只读属性。
摘要由CSDN通过智能技术生成

首先是在es6中的class,类的实例为对象,对象三大特性:封装、继承与多态

class Animal{
    constructor(name){
        this.name = name
    }

    run(){
        return `${this.name} is running`
    }
}

const snake = new Animal('lily')
console.log(snake.run())

es6中的继承:

class Dog extends Animal{
    bark(){
        return `${this.name} is barking`
    }
}

const xiaobao = new Dog('xiaobao')
console.log(xiaobao.run())

es6中的多态:

class Cat extends Animal{
    static categories = ['manmal']

    constructor(name){                    //子类构造函数中必须用super()
        super(name)
        consoe.log(this.name)
    }

    run(){
        return 'memow'+super.run()        //调用父类的run函数
    }
} 

const maomao = new Cat('maomao')
### TypeScript (TS) 的 `class` 概念 TypeScriptJavaScript 的超集,它扩展了 JavaScript 来提供更好的类型安全性和结构化支持。在 TypeScript 和 ES6 引入的 `class` 关键字用于创建类(即面向对象程序设计的基础),这允许更清晰地组织代码并提供更强大的特性。 #### **什么是类 (`class`)** 类定义了一种类型的实例(对象)的行为和属性。通过使用 `class` 关键字,您可以声明一个新的类,该类可以包含构造函数、静态方法、成员变量和方法。 #### **构造函数** 构造函数是类的特殊方法,当创建类的新实例时自动调用。它们通常用于初始化实例的状态: ```typescript class MyClass { constructor(private myAttribute: any) { // 初始化操作 } } ``` 在这个例子,`MyClass` 类有一个私有属性 `myAttribute`,其在构造函数设置。 #### **继承** 类也可以从其他类派生(继承),这使得子类可以重用父类的功能,并且能够定义自己的行为: ```typescript class ParentClass { public method() { // 方法实现 } } class ChildClass extends ParentClass { override method() { // 覆盖父类的方法实现 } } ``` 这里,`ChildClass` 继承自 `ParentClass` 并重写了其方法。 #### **接口和类型约束** 在 TypeScript ,还可以使用接口来描述对象的形状(包括属性和方法)。结合 `extends` 关键字,类可以通过实现接口来明确指定它的行为和结构: ```typescript interface MyInterface { name: string; greet(): void; } class MyClass implements MyInterface { constructor(public name: string) {} greet() { console.log(`Hello, ${this.name}!`); } } ``` 在这个例子,`MyClass` 实现了一个名为 `MyInterface` 的接口。 ### **使用 `type` 进行约束** 在您的引用示例展示了如何使用 `type` 进行泛型类型约束。这允许创建更具灵活性的函数,可以根据传递给它们的具体类型执行不同的逻辑: ```typescript type Class = string; function result<T extends Class>(val: T): T { console.log(val.length); return val; } result<string>("zhangsan"); ``` 这个 `result` 函数接受一个参数,假设它是某种类型(这里通过 `T extends Class` 进行约束),并返回相同的值。类型断言 (`<string>`) 表明调用者知道传递的是字符串类型。 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值