当前位置: 首页 > news >正文

TypeScript的构造函数constructor用法理解

把构造函数想成“快递打包+贴标签”:

  1. 你下单:new Student('张三', 20)
  2. 工厂收到订单,开始打包:
    • 拿一个空箱子(空对象)
    • 把名字和年龄塞进去(this.name = 张三, this.age = 20
    • 贴好“Student”标签(告诉系统这是 Student 类型)
  3. 打包完成,把箱子(实例)送给你用。

在 TypeScript 里,构造函数就是 “自动打包” 的函数。
写法可以极简:

class Student {// 一行顶三行:声明属性、接收参数、赋值constructor(public name: string, public age: number) {}
}

拆成白话步骤:

  • public name: string
    → 先声明:箱子要有一个“名字”格子,类型是 string
  • 放在构造函数的参数里
    → 打包时直接把传进来的值塞进这个格子
  • 省掉 this.name = name 的重复代码

所以构造函数 = “对象出生说明书”
谁来、带什么、放哪里,一次写清,后面 new 就按说明书自动完成。

举例子:

interface Person {name: string;age: number;greet(): void;
}class Student implements Person {constructor(public name: string, public age: number) {}greet() {console.log(`Hello, my name is ${this.name}`);}
}

constructor 就是“造人机器”——告诉程序:
“当我 new Student(...) 时,具体怎么把名字和年龄塞进这个学生对象里。”

拆解看:

  1. public name: string, public age: number
    这是 构造函数的简写语法糖

    • 自动在类里生成同名的 公共属性 this.namethis.age
    • 省掉手写 this.name = name; this.age = age; 的麻烦
  2. 如果不写这个构造函数,就必须手动补:

    class Student implements Person {name: string;age: number;greet() { ... }
    }
    

    但此时 new Student('Tom', 18) 会报错——没有地方把传进来的值塞进对象

  3. 因此它的作用一句话总结:
    接收创建对象时传来的参数,并把它们变成实例属性,让对象真正“有名字有年龄”

http://www.dtcms.com/a/347179.html

相关文章:

  • 深入理解Java虚拟机:JVM高级特性与最佳实践(第3版)第四章知识点问答补充及重新排版
  • 离线优先与冲突解决:ABP vNext + PWA 的边缘同步
  • SQL Server更改日志模式:操作指南与最佳实践!
  • 使用 Certbot 申请 Apache 证书配置棘手问题
  • UAD详解
  • 分库分表系列-核心内容
  • 知识蒸馏 Knowledge Distillation 概率链式法则(Probability Chain Rule)
  • Class42时序模型
  • 深度学习开篇
  • 【通俗易懂】TypeScript 的类型守卫 (Type Guards)作用理解
  • iperf2 vs iperf3:UDP 发包逻辑差异与常见问题
  • [新启航]白光干涉仪与激光干涉仪的区别及应用解析
  • ubuntu 新登录修改root密码
  • 【攻防世界】Web_php_include
  • 力扣热题之动态规划
  • CryptSIPVerifyIndirectData函数分析
  • 鸿蒙开发进阶(HarmonyOS)
  • STM32 外设驱动模块八:红外反射式光电模块
  • 【大语言模型 15】因果掩码与注意力掩码实现:深度学习中的信息流控制艺术
  • 2-5.Python 编码基础 - 键盘输入
  • 2025钉钉十周年新品发布会,新品 “蕨”命名,到底是什么?
  • vue3 - 组件间的传值
  • nodejs和vue安装步骤记录
  • 【Golang】有关任务窃取调度器和抢占式调度器的笔记
  • 机器人 - 无人机基础(5) - 飞控中的传感器(ing)
  • 【大语言模型 16】Transformer三种架构深度对比:选择最适合你的模型架构
  • 云原生俱乐部-k8s知识点归纳(8)
  • 资深产品经理个人能力提升方向:如何系统化进阶并考取高价值证书?
  • 资深产品经理个人能力提升方向:如何系统化进阶与考证规划
  • 可视化-模块1-HTML-02