TypeScript学习-类class

公共属性的修饰符:

  • public:公共,私有与受保护的修饰符,默认修饰符,外部和内部都能使用
  • private:私有的,只能内部类用,外部不能读写
  • protected:派生类(子类)可访问
  • readonly:外部只能读不能写
  • static:静态属性或静态方法

1、类的定义

  • 关键字: class
 类class 类名{属性(静态属性,动态属性)方法(静态方法,动态方法)}

class Person {name: string = 'zhangsan'// 定义实例属性 (只有实例化后才能调用)//  const per = new Person() // console.log(per.name)static age: number = 18 // 定义类属性(静态属性),前加一个static关键字(直接通过类调用)// console.log(Person.name)readonly sex: string = '男'// readonly修饰属性表示不可以修改,只能读eat() {console.log('我在吃东西')}// 定义实例方法,(只有实例化后才能调用)//  const per = new Person() // console.log(per.name)static sleep() {console.log('我在吃东西')}// 定义类静态方法,前加一个static关键字(直接通过类调用)// console.log(Person.sleep)
}

2、构造函数和this

  • 构造函数: 构造函数会在对象创建的时被调用
  • this:表示当前的实例,在方法中可以通过this来表示当前调用对象的方法
 class Dog {name: stringage: numberconstructor(name: string, age: number) {this.name = namethis.age = age}eat() {console.log('我在吃东西')console.log(this.name)}sleep() {console.log('我在吃东西')}
}
const dog1 = new Dog('小二哈', 5)
const dog2 = new Dog('哈皮狗', 10)

3、继承

  • 两个关键字:extends,super
  • extends:用来声明类的继承关系,表示是的关系
  • super:调用父类的构造函数或方法
  继承通过继承可以将多个类中共有的代码写在一个父类中,这样就只需要写一次即可让所有的子类都同时拥有父类中的属性和方法如果子类和父类名字相同,则会覆盖掉父类方法(方法重写)class 父类名{属性(静态属性,动态属性)方法(静态方法,动态方法)}class 子类名 extends 父类名{...自己的单独拥有的属性和方法}
class Animal {name: stringage: numberconstructor(name: string, age: number) {this.name = namethis.age = age}eat() {console.log('我在吃东西')console.log(this.name)}sleep() {console.log('我会睡觉觉')}
}// 定义一个狗类
// 使Dog类继承Animal类
// 父类: Animal, 子类:Dog
class Dog extends Animal {sex: stringconstructor(name: string, age: number, sex: string) {super(name,age)this.sex = sex}run() {console.log('我在跑动')}
}class Cat extends Animal {catch() {console.log('我在抓老鼠')}
}const dog = new Dog('小狗', 5,'女')
console.log(dog.run())const cat = new Cat('猫咪', 10)
console.log( cat.catch())

4、抽象

  • 关键字: abstract
  • 抽象类和普通类区别:不能用来创建对象,专门用来被继承的类
  • 可以定义抽象方法,子类必须对此抽象方法进行重写
  • 抽象方法:必须只能在抽象类中用
abstract class Animal {name: stringage: numberconstructor(name: string, age: number) {this.name = namethis.age = age}abstract eat():void
}class Dog extends Animal {sex: stringconstructor(name: string, age: number, sex:string) {super(name,age)this.sex = sex}eat() {console.log('我喜欢吃骨头')}
}
class Cat extends Animal {eat() {console.log('我喜欢吃大鱼')}
}

5、接口

  • 两个关键字:interface 、implements
  • interface :用来声明类为接口
  • implements :类去实现接口
  • 接口: 用来定义一个类的结构,用来定义一个类中应该包含那些属性,同时接口也可以当成类型声明去使用,可以被多次使用,但一个类只能一个接口
  • 接口只是定义结构,不能有实际的值,方法都是抽象方法
// 接口: 关键字 interface interface 接口类名 {属性方法}
// 实现 :关键字 implements
class 类名 implements 接口名{接口类中所有的属性和方法必须都得实现
}
 interface myInterface{name: stringage: number}interface myInterface{sex: stringrun():void // 方法
}// 实现接口
class myClass implements myInterface{name: stringage: numbersex: stringconstructor(name:string,age:number,sex:string){this.name = namethis.age = agethis.sex = sex}run(): void {throw new Error("Method not implemented.")}
}

6、泛型

  • 在定义函数或者类时,如果遇到类型不明确即可使用泛型
  • 有时候需求不明确类型,虽然可以使用any来实现,但是any 不能做约束,不会进行类型判断,后期会出现一些莫名其妙的bug,不建议使用
function fn<T>(a:T):T{return a
}
let result = fn(10) // 不知道泛型,TS可以自动对类型进行判断
let result2 = fn<string>('指定string的泛型') // 指定泛型,可以在实例化的时候自己定义泛型的所需要的类型
  • 泛型可以指定多个
function fn2<T, k>(a:T,b:k):T{return a
}
fn2<number, string>(123,'hello')
  • 对泛型进行约束
interface Inter{length: number
}
// T extends Inter 表示泛型T是必须Inter实现类
function fn3<T extends Inter>(a:T):number{return a.length
}
fn3('123')

TypeScript学习-类class相关推荐

  1. typescript学习之路(三) —— ts定义类的方法(包含es5以及es6的定义类)

    提起类,不得不说一下,强类型编程语言,如php,java,c++等都有类的概念.而js作为一门弱类型语言,是没有类这个概念的,虽然也能模拟类的实现,但总归不是类.so,ts也只是模拟类而已,使得更贴切 ...

  2. typescript学习之路(四) —— ts类的继承(包含es5以及es6的类继承)

    上一文已经写了es5,es6等类的定义,所以本章主要写es5和es6的继承,由于es6的继承和ts的继承如出一辙,只是加了类型定义而已,所以ts的继承稍微写下,不会太详细. 文章目录 es5继承 原型 ...

  3. Typescript 学习笔记七:泛型

    中文网:https://www.tslang.cn/ 官网:http://www.typescriptlang.org/ 目录: Typescript 学习笔记一:介绍.安装.编译 Typescrip ...

  4. typescript 接口 java_[Java教程]【TypeScript】TypeScript 学习 2——接口

    [Java教程][TypeScript]TypeScript 学习 2--接口 0 2015-06-19 12:00:28 在 TypeScript 中,接口是用作约束作用的,在编译成 JavaScr ...

  5. TypeScript 学习一 参数,函数,析构表达式

    1,TypeScript是由微软开发的,不过新出的Angular2框架就是谷歌公司由TypeScript语言编写的,所以现在TypeScript是有微软和谷歌一起支持的: 2,TypeScript在j ...

  6. Typescript 学习笔记一:介绍、安装、编译

    前言 整理了一下 Typescript 的学习笔记,方便后期遗忘某个知识点的时候,快速回忆. 为了避免凌乱,用 gitbook 结合 marketdown 整理的. github地址是:ts-gitb ...

  7. TypeScript学习总结

    TypeScript学习总结 前言 一.TypeScript是什么? 二.JavaScript 与 TypeScript 的区别 三.TypeScript基础 3.3.TypeScript 基础语法 ...

  8. 最全的TypeScript学习指南

    大家好,今天给大家带来 某机构教研总监陆神的开年之作<最全TypeScript学习指南>可以说是非常的细致.全面 TypeScript 是由微软2012年推出的,自由和开源的编程语言.这门 ...

  9. TypeScript学习记录

    TypeScript学习记录 vscode设置自动编译 首先使用tsc --init 生成tsconfig.json配置文件 (可以根据需要修改设置) 终端->运行任务->typescri ...

  10. JavaScript TypeScript学习总结

    本文章为web课学习JavaScript & TypeScript的学习总结 JavaScript & TypeScript学习总结 JavaScript JS介绍 JS基础 标识符 ...

最新文章

  1. 找出得分最高的无重复子段
  2. 直播丨Oracle 12.2系列安装
  3. ps css html,用ps两分钟做个xhtml+css的网站首页
  4. 远程桌面发生身份验证错误,要求的函数不受支持
  5. 基于单片机的自行车里程监测系统的设计(自行车码表)
  6. php strpos注意问题坑,strpos函数的坑
  7. 配置Snappy压缩
  8. 计算机网络之五层体系结构
  9. x41t下使用工行华虹u盾
  10. 国内外主流容灾备份厂商介绍
  11. 全球城市ZoneId和UTC时间偏移量的最全对照表
  12. 反三角函数定义域的确定
  13. 阿里正式启动2021届春季校招!字节跳动Android面试凉凉经,实战解析
  14. 苏嵌学习日志12 07.20
  15. R语言近期记录(201911)
  16. 网络体系之TCP/IP模型
  17. 程序员开发指南!半路出家Android程序员看我轻松逆袭!实战篇
  18. read函数 读取指定长度的数据
  19. 人脸识别 无法打开相机 笔记本_window10 hello 人脸识别无法启动相机的问题
  20. 丢番图与麦乐鸡购买问题

热门文章

  1. ThreeJS —— 机房Demo(二)
  2. 测试用例方法错误推测法
  3. 参与openEuler社区不到1年,我成为了社区Maintainer……
  4. 【用户角色权限设计】
  5. 信号处理:希尔伯特-黄变换
  6. 云栖大会压轴好戏 阿里云智能视频云专场划重点啦!
  7. 多序列比对要多久时间_多序列比对软件Clustalw使用方法
  8. 【分享】揭发天气秀、桌面秀、雪狐等号称资源占用小的桌面软件的流氓行为!
  9. PowerShell 实现批量下载文件
  10. 校园网页设计成品 学校班级网页制作模板 大学生静态HTML网页源码 dreamweaver网页作业 简单网页课程成品