TypeScript 类入门
【摘要】 搭建环境项目结构主项目目录srccreate_class.tsindex.htmltsconfig.jsontsconfig.json文件配置{ "compilerOptions": { "module": "es2015", "target": "es2015", "strict": true, "outDir": "./di...
搭建环境
-
项目结构
- 主项目目录
- src
- create_class.ts
- index.html
- tsconfig.json
- src
- 主项目目录
-
tsconfig.json文件配置
{
"compilerOptions": {
"module": "es2015",
"target": "es2015",
"strict": true,
"outDir": "./dist"
},
"include": [
"./src/**/*"
]
}
定义类
创建对象 必须先定义类。 所谓类可以理解为对象的模型
// 使用class关键字定义一个类
/*
对象中主要包含了两个部分:
属性
方法
*/
class Person {
/*
直接定义的属性是实例属性 需要通过对象的实例去访问
const per = new Person()
per.name
使用static开头的是静态属性(类属性) 可以直接通过类名.属性获取
Person.age
*/
// 定义实例属性
name: string = 'vike'
// 只读实例属性 无法修改
readonly sex: string = '男'
// 在属性前使用static关键字可以定义类属性(静态属性)
static age: number = 18
// 平时使用 有自动类型判断
names = 'vike'
ages = 18
// 定义实例方法 调用使用实例.方法名
sayHello() {
console.log('Hello vike!')
}
// 定义类方法 调用使用类名.方法名
static sayHellos() {
console.log('Hello vikes!')
}
}
const per = new Person()
console.log(per)
构造函数
- 新建一个ts文件 编写类里构造函数
class Dog {
name:string
age:number
// constructor 被称为构造函数 会在对象创建时调用
constructor(name:string, age:number) {
// 在实例方法中,this表示当前的实例
// 在构造函数中当前对象就是新建的那个对象
// 可以通过this向新建对象中添加属性
console.log(this)
this.name = name
this.age = age
}
// 实例方法
bark() {
alert('汪汪汪')
}
}
// 接收两个参数 name age
const dog = new Dog('旺财',3)
const dog1 = new Dog('小黑',5)
console.log(dog)
类的继承
- ocp原则 对扩展开放 对修改关闭
(function () {
// 定义一个动物的类
class Animal {
name: string
age: number
constructor(name: string, age: number) {
this.name = name
this.age = age
}
sayHello() {
console.log('动物在叫')
}
}
// 定义一个狗的类 使dog类继承Animal类
// 此时Animal类称为父类 dog类称为子类
// 使用继承后 子类将会拥有父类的属性和方法
// 通过继承就可以让共用属性方法复用 不用重复写
// 如果要扩展 直接加就可以
class Dog extends Animal {
// 扩展
run() {
console.log(`${this.name}在跑`)
}
// 如果子类方法和父类方法重复 子类会覆盖父类方法
// 方法的重写
sayHello() {
console.log('汪汪汪')
}
}
// 定义一个猫类 使cat类继承Animal类
class Cat extends Animal {
}
const dog = new Dog('小黄', 3)
const cat = new Cat('小喵', 5)
})()
super关键字
- super是指当前类的父类
(function () {
class Animal {
name: string
constructor(name: string) {
this.name = name
}
sayHello() {
console.log('动物在叫')
}
}
class Dog extends Animal {
age:number
// 如果在子类的构造函数中初始化属性 必须调用父类的构造函数
constructor(name:string,age:number) {
super(name)
this.age = age
}
sayHello() {
// 在当前方法中 super表示当前的父类
super.sayHello()
}
}
})()
抽象类
(function () {
/*
abstract 开头的是抽象类
抽象类和其他类唯一区别就是不能创建实例对象 只能被继承
抽象类中可以添加抽象方法
*/
abstract class Animal {
name: string
constructor(name: string) {
this.name = name
}
// 抽象方法只能在抽象类中定义
// 并且子类必须对方法重写
abstract sayHello():void
}
class Dog extends Animal {
sayHello() {
console.log('汪汪汪')
}
}
})()
总结
- 今日份 ts类知识get~
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)