js中的class类
class Parent {
constructor(x) {
this.x = x;
this.sayHello = function () {
console.log("sayHello")
}
}
getX() {
console.log("getX==>", this.x)
}
}
ts中的class类
//class 类 传值必须定义类型和值
class Person {
name!: string; // js中不用定义 ts中需要定义
age: number;
constructor(name: string, age: number) {
this.name = name;
this.age = age;
}
running() {
console.log(this.name)
}
eating() {
console.log(this.age)
}
}
let p = new Person("小白", 666)
p.running()
p.eating()
console.log(p);
类中的修饰符
1 public [ˈpʌblɪk] 公有属性方法 --- 修饰的是在任何地方可见 公有的属性或方法 默认编写的属性就是public的
2 private [ˈpraɪvət] 不需要的值写上就不用继承 --- 修饰的是仅在同一类中可见 私有的属性或方法(不参与继承)
3 protected [prəˈtektɪd] 不能读和写 --- 修饰的是仅在类自身及子类中可见 受保护的属性或方法(不能读写)
4 readonly [ˌriɑˈdɔnli] 只读 --- 修饰的是这个属性我们不希望外界可以任意的修改,只希望确定值之后直接使用(只能读)
5.static [ˈstætɪk] --- 静态成员 无法实例化 不能用实例调用 用构造函数调用
类的继承
//父类
class Person {
name!: string; // Ts中需要定义
age: number;
constructor(name: string, age: number) {
this.name = name;
this.age = age;
}
running() {
console.log(this.name)
}
eating() {
console.log(this.age)
}
}
class Student extends Person{
str: string;
constructor(name:string, age:number, str: string) {
super(name, age); // 继承要写super
this.str = str
}
running(){
// this指向当前构造函数的实例就是 s的this
//supe --- Person.running()
super.running()
console.log(this.name + "哈哈哈")
}
}
let s: Student = new Student("小白", 666, "ts");
s.running();
s.eating();
console.log(s)