Typescript新特性关键字readyonly详细解读

readonly修饰符:首先是一个关键字,对类中的属性成员进行修饰,修饰后,该属性成员,就不能在外部被随意的修改了

一 构造函数中,可以对只读的属性成员的数据进行修改

(()=>{

    //定义一个类型
    class Person {
        //属性
        readonly name: string
        //构造函数
        constructor(name: string) {
            this.name = name
        }
    }

    //实例化对象
    const person: Person = new Person('小米6666')

    console.log(person)
    console.log(person.name)

})()

二 如果构造函数中的没有任何参数,类中的属性成员此时已经使用readonly进行修饰了。那么外部也是不能对这个属性进行更改了

(()=>{

    //定义一个类型
    class Person {
        //属性
        readonly name: string
        //构造函数
        constructor() {
           
        }
    }

    //此时无法更改,因为name属性是只读的
    person.name='大肘子'
    console.log(person.name)

})()

三 构造函数中的参数可以使用readonly进行修饰,一旦修饰了,那么该类中就有了这个只读成员属性了,外部可以访问,但是不能修改

构造函数中的参数,一旦使用readonly进行修饰后,那么该name参数可以叫参数属性
构造函数中的参数,一旦使用readonly进行修饰后,那么Person中就有了一个name的属性
构造函数中的参数,一旦使用readonly进行修饰后,外部也是无法修改类中的name属性成员值的

(()=>{

    //定义一个类型
    class Person {

        //构造函数中的参数,一旦使用readonly进行修饰后,那么该name参数可以叫参数属性
        //构造函数中的参数,一旦使用readonly进行修饰后,那么Person中就有了一个name的属性
        //构造函数中的参数,一旦使用readonly进行修饰后,外部也是无法修改类中的name属性成员值的
        constructor(readonly name: string='大反派') {
            this.name = name
        }
    
    }

    //实例化对象
    const person: Person = new Person('小米')

    console.log(person)
    person.name='大肘子'
    console.log(person.name)

})()

四 构造函数中的参数可以使用public,privateprotected进行修饰,无论是哪个进行修饰,该类中都会自动的添加这么一个属性成员

(()=>{

        //定义一个类型
        class Person {
           //构造函数中的参数,一旦使用public进行修饰后,那么Person中就有了一个name的属性
        //    constructor(public name: string='大反派') {
        //         this.name = name
        //     }
            //构造函数中的参数,一旦使用private进行修饰后,那么Person中就有了一个name的属性
            // constructor(private name: string='大反派') {
            //     this.name = name
            // }

            //构造函数中的参数,一旦使用protected进行修饰后,那么Person中就有了一个name的属性成员了(只能在本类和派生类中访问以及使用)
            constructor(protected name: string='大反派') {
                this.name = name
            }
        
        }
    
        //实例化对象
        const person: Person = new Person('小米')
    
        console.log(person)
        person.name='大肘子'
        console.log(person.name)
})()

建议读者复制上面代码运行,查看浏览器打印情况,结合文章解析能更深入了解。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

黑码小帅

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值