前端系列三十三:TS中的class类

news/2024/7/10 1:50:06 标签: 前端, typescript, vue

实例属性初始化:

写法:

class Person {
        age: number
        gender = ' 男 '
        }

const p = new Person( )

解释:

1.声明成员 age,类型为number ( 没有初始值 )

2.声明成员 gender, 并设置初始值, 此时,可省略类型注解 ( TS类型推论为string类型 )

class类:

构造函数:

class Person {
       age: number
       gender: string
    
        constructor ( age: number, gender: string ) {
        this.age = age
        this.gender = gender
        }

    }

解释:

1.成员初始化( 比如 age: number ) 后,才可以通过 this.age 来访问实例成员

2.需要为构造函数指定类型注解,否则会被隐式推断为 any; 构造函数不需要返回值类型

实例方法:

class Point {
     x = 10
                 y= 10

    scale( n:number ): void {
    this.x *= n
    this.y *= n
    }
     }

解释:

方法的类型注解 ( 参数和返回值 ) 与函数用法相同


继承:

两种方式:
    1. extends ( 继承父类 ) :

    class Animal {
    move() { console.log('Moving dlong') }
    }

    class Dog extends Animal { 
    bark() { console.log( '汪' ) }
     }

    const dog = new Dog( )

解释:

通过extends 关键字实现继承

子类Dog 继承父类Animal 则 Dog的实例对象 dog 就同时具有了父类 Animal 和子类 Dog的
所有属性和方法

    2. implements ( 实现接口 ):

写法:

interface Singale { 
    sing( ) : void
    name: string
    }

    class Person implements Singale {
    name: 'jack'
    sing( ) {
    console.log( '你是我的小苹果' )
    }
    }

解释:

通过'implements' 关键字让 class 实现接口

    Person类实现接口 Singable 意味着,Person 类中必须 提供 Singable 接口中指定所有的方法
和属性

类成员可见性:

可以使用TS来'控制class的方法或属性对于class外的代码是否可见'

    可见性修饰符包括:

    (1).public (公有的):表示公有的,'公有成员可以被任何地方访问',默认可见性

    class Animal {
    public move ( ) { 
        console.log( 'Moving along' )
     }
    }


解释:

     1.在类属性或方法前面添加 ' public' 关键字,来修饰该属性或方法是共有的

     2. 因为 public 是默认可见性,所以,'可以直接省略'

(2) protected: 表示'受保护的',仅对其声明所在类和子类中 (非实例对象) 可见

class Animal {
    protected move ( ) { 
        console.log( 'Moving along' )
     }
    }
    
    class Dog extends Animal {
    bark( ) { 
    console.log( '汪!' )
    }
    this.move( )
    }

解释:

1.在类属性或方法前面添加 protected 关键字, 来修饰该属性或方法是受保护的

2.在子类的方法内部可以通过 this来访问父类中受保护的成员, 但是,'对实例不可见'

(3)private: 表示'私有的,只在当前类中可见',对实例对象以及子类也是不可见的

写法:

class Animal { 
         private move( ) { console.log( 'hello' ) }

        walk ( ) {  
       this.move( )
     }
    }

解释:

1.在类属性或方法前面添加 'private' 关键字,来修饰该属性或方法是私有的

 2.私有的属性或方法只在当前类中可见,对子类和实例对象也都是不可见的

只读修饰符:

readonly
    readonly: 表示'只读',用来防止在构造函数之外对属性进行赋值

    写法:
    class Person {
    readonly  age: number = 18
    constructor ( age: number ) {
    this.age = age
    }
    }

解释:

1.使用'readonly' 关键字修饰属性是只读的,注意'只能修饰属性不能修饰方法'
    
    2.注意:属性age后面的类型注解 ( 比如,此处的number )如果不加,则age的类型为18 (字面量类型)

    3.'接口或者{}表示的对象类型,也可以使用readonly' 


http://www.niftyadmin.cn/n/861307.html

相关文章

前端系列三十四:TS类型兼容

类型兼容性: 两种类型系统: 1. Structural Type System (结构化类型系统) 2.Nominal Type System ( 标明类型系统 ) TS采用的是结构化类型系统,也叫做 duck typing (鸭子类型) ,类型检查关注的是值所具有的形状 也就是说&…

前端系列三十五:跨域问题及解决方案

SwitchHosts下载及添加配置: http://test.auclt.baidu.os.com http://test.asclt.baidu.os.com 这里仔细观察会发现请求地址后缀名后三位域名都是一样的,而这个时候我们本地请求这些地址会报跨域问题 解决步骤: 第一步: 打开…

前端系列三十六:添加本地请求参属地址及请求

第一步: 一般我们会在项目中的src下新建一个api文件夹用来放请求配置及接口中请求的请求参数 第二步: 我们在api文件夹下,新建一个例如apis.js文件用来存储接口参数, 示例: apis.js文件里: const apiList { //…

前端系列三十七:项目中方便解耦使用枚举

当有时项目中有的模块是根据传值过来的条件判断来达到显示隐藏时就可以使用枚举&#xff0c;方便后期维护 写法&#xff1a; <template v-if"types WORKORDERTYPE.SUBMIT || types WORKORDERTYPE.MODIFY"> <h1>测试</h1> </template> …

前端系列三十八:node版本及配置

node里npm版本&#xff1a; npm install -g npm7.5.4 node设置镜像&#xff1a; npm config rm proxy npm config rm https-proxy

前端系列三十九:Vis code插件

开发中常用插件&#xff1a; Vue VSCode Snippets Vue Language Features (Volar) Vue 3 Snippets Vetur px2vw px to rem & rpx (cssrem) Prettier ESLint OSU Mode 3 node-snippets Live Server Live Sass Compiler JavaScript Booster indent-rainbow GitLens —…

前端系列三十九:VisCode插件

开发中常用插件&#xff1a; Vue VSCode Snippets Vue Language Features (Volar) Vue 3 Snippets Vetur px2vw px to rem & rpx (cssrem) Prettier ESLint Power Mode OSU Mode 3 node-snippets Live Server Live Sass Compiler JavaScript Booster indent-rainbow GitLen…

React18基础一

React是什么&#xff1a; react是用于构建用户界面的javaScript库react由Facebook来更新和维护,它是大量优秀程序员的思想结晶react官网: React 官方中文文档 – 用于构建用户界面的 JavaScript 库 React特点&#xff1a; 声明式编程: 只需要维护自己的状态,当状态改变时,Rea…