在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
面向对象编程-类的声明和使用类的出现可以让前端程序员抽象层次、增加维护性和复用性。当然这一系列的类的操作,我们都叫他面向对象编程。TypeScript就是一个基于类的面向对象编程语言。 类是对象具体事务的一个抽象,对象是类的具体表现。 // 类规范,首写字母大写 - 大驼峰命名 class XiaoJieJie{ // 区别于对象,不需要使用逗号隔开 name: string age: number // 构造函数 // 构造函数的主要作用是给类中封装的属性进行赋值 constructor(name:string, age:number){ // 使用 this 赋值 this.name = name this.age = age } say(){ console.log('NIHAOA!') } } // 有类之后声明对象 let jiejie:XiaoJieJie = new XiaoJieJie('fanbingbing',18) // 打印出生成的对象看下样子 console.log(jiejie) // 调用类方法 jiejie.say() 使用和定义类其实很简单,关键是理解类的思想。要有抽象逻辑的能力,这样才能复用和增强维护性。 面向对象编程-修饰符访问修饰符
class XiaoJieJie{ public sex:string protected name:string private age:number public constructor(sex:string, name:string, age:number){ this.sex = sex this.name = name this.age = age } public sayHello(){ console.log('HELLO') } protected sayLove(){ console.log('ILOVEYOU') } } var jiejie:XiaoJieJie = new XiaoJieJie('nv', 'DLLB', 16) // 打印出对象属性看效果 console.log(jiejie.sex) // 报错:属性“name”受保护,只能在类“XiaoJieJie”及其子类中访问 console.log(jiejie.name) // 报错:属性“age”为私有属性,只能在类“XiaoJieJie”中访问 console.log(jiejie.age) // 调用方法 jiejie.sayHello() // 报错:属性“age”为私有属性,只能在类“XiaoJieJie”中访问 jiejie.sayLove() 只读属性修饰符使用readonly修饰符将属性设置为只读,只读属性必须在生命时或者构造函数里被初始化(注意)。 class Man{ public readonly sex:string = 'nan' } var man:Man = new Man() // 报错:无法分配到“sex”,因为它是常数或只读属性 man.sex = 'nv' 面向对象编程-继承和重写类的继承继承:允许我们创建一个类(子类),从已有的类(父类)上继承所有的属性和方法,子类可以新建父类中没有的属性和方法。 // 父类 class Nloong{ public name:string public age:number public skill:string constructor(name:string, age:number, skill:string){ this.name = name this.age = age this.skill = skill } public interest(){ console.log('zhaonimei') } } let loongObj:Nloong = new Nloong('baiye', 18, 'coding') // 测试父类方法 loongObj.interest() // 子类继承父类属性和方法 extends // 但是有一点需要我们注意,TypeScript不支持多重继承。 class Xloong extends Nloong{ // 子类扩展自身的属性和方法 public xingxiang:string = 'shuaiqi' public zhuangQian(){ console.log('yitianyigeyi') } } let shuai = new Xloong('shuai', 5, 'daren') // 子类能使用父类的方法,通过继承而来 shuai.interest() // 子类能使用父类找中没有自身扩展的方法 shuai.zhuangQian() 类方法的重写// 父类 class Nloong{ public name:string public age:number public skill:string constructor(name:string, age:number, skill:string){ this.name = name this.age = age this.skill = skill } public interest(){ console.log('zhaonimei') } } let loongObj:Nloong = new Nloong('baiye', 18, 'coding') loongObj.interest() // 子类 class Xloong extends Nloong{ public xingxiang:string = 'shuaiqi' // 重写 public interest(){ // super 在子类中调用父类的方法,实现重写时保存父类的方法 super.interest() console.log('chuangjianGS') } public zhuangQian(){ console.log('yitianyigeyi') } } let shuai = new Xloong('shuai', 5, 'daren') shuai.interest() shuai.zhuangQian() 面向对象编程-接口认识接口// 接口 interface Husband{ sex:string interset:string // 接口可选参数添加问号 maiBaoBao?:Boolean } let myhusband:Husband = {sex: 'nan', interset: 'kanshu'} console.log(myhusband) 面向对象编程-命名空间命名空间的使用Dehua 是同名类,可以使用不同的命名空间区分使用 // 命名空间 namespace shuaiGe{ // export 暴露出去 export class Dehua{ public name:string = 'liudehua' talk(){ console.log('woshishuaigeliudehua') } } } namespace bdjie{ export class Dehua{ public name:string = 'madehua' talk(){ console.log('woshiershixiongmadehua') } } } let dehua1:shuaiGe.Dehua = new shuaiGe.Dehua() let dehua2:bdjie.Dehua = new bdjie.Dehua() dehua1.talk() dehua2.talk() 原文地址:http://jspang.com/post/typescript.html?tdsourcetag=s_pcqq_aiomsg |
请发表评论