前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >TypeScript-类属性修饰符

TypeScript-类属性修饰符

原创
作者头像
杨不易呀
发布2023-09-28 19:16:06
2640
发布2023-09-28 19:16:06
举报
文章被收录于专栏:杨不易呀

前言

TypeScript 的类属性修饰符是一种重要的语言特性,用于控制类成员的可访问性和行为。主要有三种修饰符:public、private 和 protected。

public(公开的)

如果使用 public 来修饰属性, 那么表示这个属性是公开的 可以在类的内部使用, 也可以在子类中使用, 也可以在外部使用 默认情况下就是 public

代码语言:typescript
复制
class Person {
    public name: string;
    age: number;
    gender: string;

    constructor(name: string, age: number, gender: string) {
        this.name = name;
        this.age = age;
        this.gender = gender;
    }

    say(): void {
        console.log(`name=${this.name},age=${this.age},gender=${this.gender}`);
    }
}

class Student extends Person {
    constructor(name: string, age: number, gender: string) {
        super(name, age, gender);
    }

    say(): void {
        console.log(`name=${this.name}`);
    }
}

let p = new Person('BNTang', 18, 'male');
p.say();
console.log(p.name);

let stu = new Student('zs', 18, 'female');
stu.say();
console.log(stu.name);

protected(受保护的)

如果使用 protected 来修饰属性, 那么表示这个属性是受保护的 可以在类的内部使用, 也可以在子类中使用

错误示例:

image-20211128154621788
image-20211128154621788

正确示例:

代码语言:typescript
复制
class Person {
    name: string;
    protected age: number;
    gender: string;

    constructor(name: string, age: number, gender: string) {
        this.name = name;
        this.age = age;
        this.gender = gender;
    }

    say(): void {
        console.log(`name=${this.name},age=${this.age},gender=${this.gender}`);
    }
}

class Student extends Person {
    constructor(name: string, age: number, gender: string) {
        super(name, age, gender);
    }

    say(): void {
        console.log(`age=${this.age}`);
    }
}

let p = new Person('BNTang', 18, 'male');
p.say();

let stu = new Student('zs', 18, 'female');
stu.say();

private(私有的)

如果使用 private 来修饰属性, 那么表示这个属性是私有的 可以在类的内部使用

错误示例:

image-20211128161154773
image-20211128161154773

正确示例:

代码语言:typescript
复制
class Person {
    name: string;
    age: number;
    private gender: string;

    constructor(name: string, age: number, gender: string) {
        this.name = name;
        this.age = age;
        this.gender = gender;
    }

    say(): void {
        console.log(`name=${this.name},age=${this.age},gender=${this.gender}`);
    }
}

class Student extends Person {
    constructor(name: string, age: number, gender: string) {
        super(name, age, gender);
    }

    say(): void {
    }
}

let p = new Person('BNTang', 18, 'male');
p.say();

let stu = new Student('zs', 18, 'female');
stu.say();

readonly(只读的)

错误示例:

image-20211128161354088
image-20211128161354088

正确示例:

代码语言:typescript
复制
class Person {
    name: string;
    age: number;
    readonly gender: string;

    constructor(name: string, age: number, gender: string) {
        this.name = name;
        this.age = age;
        this.gender = gender;
    }

    say(): void {
        console.log(`name=${this.name},age=${this.age},gender=${this.gender}`);
    }
}

class Student extends Person {
    constructor(name: string, age: number, gender: string) {
        super(name, age, gender);
    }

    say(): void {
    }
}

let p = new Person('BNTang', 18, 'male');
p.say();
console.log(p.gender);

let stu = new Student('zs', 18, 'female');
stu.say();

注意点:关于静态属性和静态方法只有 readonly 不能使用,其它的都是可以进行使用的,博主就不演示了

end02
end02
输入图片说明
输入图片说明

最后

本期结束咱们下次再见👋~

🌊 关注我不迷路,如果本篇文章对你有所帮助,或者你有什么疑问,欢迎在评论区留言,我一般看到都会回复的。大家点赞支持一下哟~ 💗

我正在参与2023腾讯技术创作特训营第二期有奖征文,瓜分万元奖池和键盘手表

输入图片说明
输入图片说明

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
  • public(公开的)
  • protected(受保护的)
  • private(私有的)
  • readonly(只读的)
  • 最后
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档