详情可见
1.TypeScript类的基本使用

class Person {name:string; // 和ES6区别, 需要先定义实例属性, 才能够使用实例属性age:number;constructor(name:string, age:number){this.name = name;this.age = age;}say():void{console.log(`我的名称叫${this.name}, 我的年龄是${this.age}`);}static food:string; // 静态属性static eat():void{ // 静态方法console.log(`我正在吃${this.food}`);}
}
let p = new Person('lnj', 34);
p.say();
Person.food = '蛋挞';
Person.eat();class Student extends Person{book:string;constructor(name:string, age:number, book:string){super(name, age);this.book = book;}say():void{console.log(`我是重写之后的say-${this.name}${this.age}${this.book}`);}static eat():void{console.log(`我是重写之后的eat-${this.food}`);}
}
let stu = new Student('zs', 18, '从零玩转');
stu.say();
Student.food = '冰淇淋';
Student.eat();

2.类属性修饰符

public(公开的)      :
如果使用public来修饰属性, 那么表示这个属性是公开的
可以在类的内部使用, 也可以在子类中使用, 也可以在外部使用protected(受保护的) :
如果使用protected来修饰属性, 那么表示这个属性是受保护的
可以在类的内部使用, 也可以在子类中使用private(私有的)     :
如果使用private来修饰属性, 那么表示这个属性是私有的
可以在类的内部使用readonly(只读的)    :class Person {public name:string; // 默认情况下就是public的protected 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{// console.log(`name=${this.name}`);// console.log(`age=${this.age}`);// console.log(`gender=${this.gender}`);}
}
let p = new Person('lnj',34, 'male');
p.say();
// console.log(p.age);
// console.log(p.gender);let stu = new Student('zs', 18, 'female');
stu.say();
// console.log(stu.age);class Demo {readonly name:string;constructor(name:string){this.name = name;}static food:string;
}
let demo = new Demo('123');
console.log(demo.name);
// demo.name = 'abc';
console.log(demo.name);

3.类方法修饰符

public :
如果使用public来修饰方法, 那么表示这个方法是公开的
可以在类的内部使用, 也可以在子类中使用, 也可以在外部使用protected :
如果使用protected来修饰方法, 那么表示这个方法是受保护的
可以在类的内部使用, 也可以在子类中使用private
如果使用private来修饰方法, 那么表示这个方法是私有的
可以在类的内部使用class Person {name:string;age:number;gender:string;constructor(name:string, age:number, gender:string){this.name = name;this.age = age;this.gender = gender;}public sayName():void{console.log(`name=${this.name}`);}protected sayAge():void{console.log(`age=${this.age}`);}private sayGender():void{console.log(`gender=${this.gender}`);}say():void{this.sayName();this.sayAge();this.sayGender();}
}
class Student extends Person {constructor(name: string, age: number, gender: string) {super(name, age, gender);}say():void{this.sayName();this.sayAge();this.sayGender();}
}
let p = new Person('lnj', 34, 'male');
p.say();
p.sayName();
p.sayAge();
p.sayGender();
let stu = new Student('zs', 18, 'female');
stu.say();需求: 有一个基类, 所有的子类都需要继承于这个基类, 但是我们不希望别人能够通过基类来创建对象
*
class Person {name:string;age:number;gender:string;protected 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);}
}
let p = new Person('lnj', 34, 'male');
let stu = new Student('zs', 18, 'female');

4.类的可选属性

// 可选属性
// 和接口中的可选属性一样, 可传可不传的属性
class Person {// 注意点: 在TS中如果定义了实例属性, 那么就必须在构造函数中使用, 否则就会报错name:string;age?:number; // 可选属性constructor(name:string, age?:number){this.name = name;this.age = age;}// setNameAndAge(name:string, age:number){//     this.name = name;//     this.age = age;// }
}
let p = new Person('lnj');
console.log(p);

5.类的参数属性

// 参数属性
// 一句话搞定实例属性的接收和定义
//完整写法
class Person {name:string;age:number;constructor(name:string, age?:number){this.name = name;this.age = age;}
}
//简单写法
class Person {constructor(public name:string,public age:number){}
}
let p = new Person('lnj', 34);
console.log(p);

6.类的存取器

1.什么是存取器?
通过getters/setters来截取对对象成员的访问
* */
class Person {private _age:number = 0;set age(val:number){console.log('进入了set age方法');if(val<0){throw new Error('人的年龄不能小于零');}this._age = val;}get age():number{console.log('进入了get age方法');return this._age;}
}
let p = new Person();
p.age = 34;
// p.age = -6; // p.age(-6);
console.log(p.age);

TypeScripy-类的基本使用相关推荐

  1. 自己搜集编写的Delphi 通用函数

    { ********************************************************************** } { Currency Common Functio ...

  2. 继承WebMvcConfigurer 和 WebMvcConfigurerAdapter类依然CORS报错? springboot 两种方式稳定解决跨域问题

    继承WebMvcConfigurer 和 WebMvcConfigurerAdapter类依然CORS报错???springboot 两种方式稳定解决跨域问题! 之前我写了一篇文章,来解决CORS报错 ...

  3. MybatisPlus忽略实体类中的非数据库字段、JPA忽略实体类中的非数据库字段、HeHibernate忽略实体类中的非数据库字段

    mybatis plus忽略映射字段时可以在实体类属性上使用以下注解: @TableField(exist = false):表示该属性不为数据库表字段,但又是必须使用的. @TableField(e ...

  4. IDEA中根据数据库自动生成实体类,并自定义所生成的实体类中的注解 @Table @Id @...

    使用IDEA项目添加Hibernate扩展,生成实体类并配置实体类中的注解 一.使用Hibernate自动生成实体类 1.在项目上右键,选择Add Framework Support找到 Hibern ...

  5. IDEA自动生成类注解,IDEA作者信息自动生成,IDEA类信息自动生成

    在新建类文件的时候自动生成注解,诸如我们常见的那些 作者,创建时间,TODO 等等 将以下格式的代码放在Settings -> File and Code Templates -> Inc ...

  6. javabean实体类与实体类之间的快速转换

    一.Dozer是什么? dozer是一个能把实体和实体之间进行转换的工具.只要建立好映射关系.就像是ORM的数据库和实体映射一样. 使用方法示例如下: // article(PO) -> art ...

  7. 利用dom4j将实体类转换为对应的xml报文

    利用dom4j生成xml报文 目标格式: <?xml version="1.0" encoding="GBK"?><Packet type=& ...

  8. Idea groovy表生成实体类带注释

    Idea groovy表生成实体类带注释 1.点开datasourse,打开idea带的数据库工具,具体添加数据库连接,这里不描述. 这时点击会生成一个poji 这时生成的pojo中是不带中文注释的, ...

  9. java带参数的方法笔记_具有Java参数的方法的类声明

    类声明可以包含在Java中具有参数的方法.演示此过程的程序如下: 示例class Message { public void messagePrint(String msg) { System.out ...

  10. Python 闭包、单个装饰器、多个装饰器、装饰器修饰类、应用场景

    1. 闭包 在 Python 中,函数也可以作为参数.我们可以执行下面的代码: def func(a, b):return a + bprint(func) 我们直接输出函数名,而没有加括号.输出结果 ...

最新文章

  1. 创建线程那么容易,为什么非要让我使用线程池?(深深深入剖析)
  2. Permission denied
  3. button,submit, image的区别 点onclick后隐藏行
  4. java取geosever数据,终于搞定了GeoServer的WFS查询
  5. GDCM:gdcm::Global的测试程序
  6. redis之sorted sets类型及操作
  7. Java猿面试_猿灯塔:关于Java面试,你应该准备这些知识点
  8. 为什么印度盛产码农_印度农产品价格的时间序列分析
  9. 简述汇编语言中的标号有什么规定_2020年秋季学期《汇编语言》在线考试 (适用于2020年12月份考试)【答案标准】...
  10. Docker 数据管理介绍
  11. [转载] Java中的命名参数
  12. 计算机桌面有黑边怎么调整,电脑屏幕旁边有黑色框如何恢复_电脑两边黑边怎么还原-win7之家...
  13. 如何在SQL Server 2017中实现图形数据库
  14. obj type using in findobj
  15. ExtJS学习------Ext.define的继承extend,用javascript实现相似Ext的继承
  16. 解决firefox一个邮箱两个账户导致收藏夹不同步的问题
  17. quartus之BSF自底向上
  18. Java IO(文件流)
  19. 前端架构之 React 领域驱动设计
  20. linux openwrt 域名,linux dnspod客户端(适用于openwrt,ddwrt, centos, ubuntu等)

热门文章

  1. 大公司拧螺丝还是小公司扛把子
  2. matlab 向量_Matlab:向量点积和叉积及求模
  3. 怎么实现在MindMapper中添加便笺
  4. 简单常用JS函数集合大全107个
  5. 我说,执着造就了成功
  6. 常用的嵌入式数据库的比较
  7. 如何又快又好地写出优质PPT
  8. 【java毕业设计】基于javaEE+SSH+mysql+strust2的超市积分管理系统设计与实现(毕业论文+程序源码)——超市积分管理系统
  9. bert 中文 代码 谷歌_1美元从零开始训练Bert,手把手教你优雅地薅谷歌云TPU羊毛...
  10. iPhone X Face ID判断