精简之道:TypeScript 参数属性 (Parameter Properties) 详解

一、什么是参数属性?

参数属性是一种简洁的语法,是TypeScript独特的语法糖 ,它允许你在构造函数的参数列表中,通过添加访问修饰符(public, private, protected)或 readonly 关键字,来一次性完成属性的声明和初始化

示例:

typescript 复制代码
class User {
    constructor(public name: string, private age: number, readonly id: number) {
        // 构造函数体可以是空的,因为声明和赋值已经自动完成了!
        // TypeScript 在幕后为你做了三件事:
        // 1. 声明了一个 public 的 name 属性。
        // 2. 声明了一个 private 的 age 属性。
        // 3. 声明了一个 readonly 的 id 属性。
        // 4. 自动完成了 this.name = name, this.age = age, this.id = id。
    }

    public getAge(): number {
        return this.age; // age 是 private 的,但可以在类内部访问
    }
}

const user = new User('Alice', 30, 123);
console.log(user.name); // "Alice" (public, 可访问)
// console.log(user.age); // Error: 属性'age'是私有的,只能在类'User'中访问。
console.log(user.getAge()); // 30 (通过公共方法访问)
console.log(user.id); // 123 (readonly, 可访问但不可修改)
// user.id = 456; // Error: 无法分配到 'id' ,因为它是只读属性。

二、参数属性的规则与组合

参数属性不仅仅是 private 的专利,它可以与所有访问修饰符以及 readonly 组合使用:

  • public:成员在任何地方都可见。(如果省略修饰符,参数默认不会成为属性)。
  • private:成员只能在声明它的类的内部访问。
  • protected:成员可以在声明它的类及其子类的内部访问。
  • readonly:成员在初始化后不能被再次赋值,有助于创建不可变(immutable)对象。

你可以自由组合它们(readonly 通常与访问修饰符一起使用)。

总结

如果你喜欢本教程,记得点赞+收藏!关注我获取更多JavaScript/TypeScript开发干货

相关推荐
玄魂26 分钟前
一键生成国庆节祝福海报,给你的朋友圈上点颜色
前端·javascript·数据可视化
彼日花33 分钟前
前端新人30天:从手足无措到融入团队
前端·程序员
搞科研的小刘选手36 分钟前
【学术会议合集】2025-2026年地球科学/遥感方向会议征稿信息
大数据·前端·人工智能·自动化·制造·地球科学·遥感测绘
2501_9160088940 分钟前
JavaScript调试工具有哪些?常见问题与常用调试工具推荐
android·开发语言·javascript·小程序·uni-app·ecmascript·iphone
zero13_小葵司43 分钟前
在不同开发语言与场景下设计模式的使用
java·开发语言·javascript·设计模式·策略模式
蓝莓味的口香糖1 小时前
【CSS】flex布局
前端·css
Sapphire~1 小时前
重学JS-009 --- JavaScript算法与数据结构(九)Javascript 方法
javascript·数据结构·算法
彩旗工作室2 小时前
用 Supabase 打造统一认证中心:为多应用提供单点登录(SSO)
服务器·前端·数据库
EveryPossible2 小时前
第一版代码
前端·javascript·css
ObjectX前端实验室2 小时前
【图形编辑器架构】渲染层篇 — 从 React 到 Canvas 的声明式渲染实现
前端·计算机图形学·图形学