前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >typescript入门-类

typescript入门-类

作者头像
copy_left
发布2021-06-11 18:12:46
3000
发布2021-06-11 18:12:46
举报
文章被收录于专栏:方球

类定义 class

代码语言:javascript
复制
class Car{}

实例化 new

代码语言:javascript
复制
const c = new Car()

实例属性、方法

代码语言:javascript
复制
class Car{
  // 实例属性
  color: string
  // 构造函数
  constructor(color: string) {
    // 设置实例属性
    this.color = color
  }
}


// 实例属性必须现在类中定义
class Car{
   constructor(color: string) {
    // Property 'msg' does not exist on type 'Car'.
    this.color = color
  }
}

继承 extends

代码语言:javascript
复制
class Car{
  // 实例属性
  color: string
  // 构造函数
  constructor(color: string) {
    // 设置实例属性
    this.color = color
  }
}


class MiniCar extends (Car) {


  // 子类属性
  size:number = 1.2
  
  constructor(color: string, size?:number) {
    // 父类属性
    super(color)
    this.size = size || 1.2
  }
}




const m = new MiniCar('red', 1.3)
console.log(m.size)
// 1.3

静态属性、方法

使用 static 前置标识静态属性或方法

代码语言:javascript
复制
class Car{
  
  static version:string = 'v1.0'
  static setVersion(v: string) {
    Car.version = v
  }
  
  color: string
  constructor(color: string) {
    this.color = color;
  }
}
// 静态属性、方法为了方便类无需实例化,直接调用相关属性和方法
// 静态属性、方法只存在于类定义中, 实例无法调用
console.log(Car.version)
Car.setVersion('v1.1')
console.log(Car.version)
// 1.0
// 1.1


const c = new Car('orange')
console.log(c.version)
//  Property 'version' does not exist on type 'Car'. Did you mean to access the static member 'Car.version' instead?

私用属性、方法

private

代码语言:javascript
复制
只存在于当前类内的私用属性、方法

class Car{
  // 私有属性
  private factoryInfo:string = '...info'
  // 私有方法
  private writeFactoryInfo(msg: string) {
    this.factoryInfo = msg
  }
  
  color: string
  constructor(color: string) {
    this.color = color;
  }


  readFactoryInfo() {
    // 使用属性、方法只能在类内部使用
    return this.factoryInfo
  }
}




const c = new Car('orange')
console.log(c.readFactoryInfo())


// private 私有属性不能被子类继承或直接调用
class MiniCar extends Car{
  constructor(color: string) {
    super(color)
    this.writeFactoryInfo('mini car')
    // Property 'writeFactoryInfo' is private and only accessible within class 'Car'.
  }
}

protected

于 private 类似, 但子类可继承、调用父类私有属性、函数

代码语言:javascript
复制
class Car{
  // 私有属性
  protected factoryInfo:string = '...info'
  // 私有方法
  protected writeFactoryInfo(msg: string) {
    this.factoryInfo = msg
  }
  
  color: string
  constructor(color: string) {
    this.color = color;
    this.writeFactoryInfo('prototype car')
  }




  readFactoryInfo() {
    // 使用属性、方法只能在类内部使用
    return this.factoryInfo
  }
}




class MiniCar extends Car{
  constructor(color: string) {
    super(color)
    this.writeFactoryInfo('mini car')
  }
}


const m = new MiniCar('red')


console.log(m.readFactoryInfo())
// mini car

getter、 setter

代码语言:javascript
复制
class Car{
  private _version:string = ''


  get version(): string{
    console.log('get version')
    return this._version
  }


  set version(v: string) {
    console.log('set version')
    this._version = v
  }
  
}


const c = new Car()
c.version = 'v2.0'
console.log(c.version)


// set version
// get version
// v2.0
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 类定义 class
  • 实例化 new
  • 实例属性、方法
  • 继承 extends
  • 静态属性、方法
  • 私用属性、方法
    • private
      • protected
      • getter、 setter
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档