TypeScript的构造函数constructor用法理解
把构造函数想成“快递打包+贴标签”:
- 你下单:
new Student('张三', 20)
- 工厂收到订单,开始打包:
- 拿一个空箱子(空对象)
- 把名字和年龄塞进去(
this.name = 张三
,this.age = 20
) - 贴好“Student”标签(告诉系统这是 Student 类型)
- 打包完成,把箱子(实例)送给你用。
在 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(...)
时,具体怎么把名字和年龄塞进这个学生对象里。”
拆解看:
-
public name: string, public age: number
这是 构造函数的简写语法糖:- 自动在类里生成同名的 公共属性
this.name
和this.age
- 省掉手写
this.name = name; this.age = age;
的麻烦
- 自动在类里生成同名的 公共属性
-
如果不写这个构造函数,就必须手动补:
class Student implements Person {name: string;age: number;greet() { ... } }
但此时
new Student('Tom', 18)
会报错——没有地方把传进来的值塞进对象。 -
因此它的作用一句话总结:
接收创建对象时传来的参数,并把它们变成实例属性,让对象真正“有名字有年龄”。