欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

TypeScript中class類型實(shí)例講解

 更新時(shí)間:2022年12月30日 11:50:18   作者:亦世凡華、  
眾所周知在TypeScript中定義變量需要指定標(biāo)識(shí)符的類型,下面這篇文章主要給大家介紹了關(guān)于TypeScript中class類型的相關(guān)資料,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下

class類型

TypeScript支持ES引入的class關(guān)鍵字,并為其添加了類型注解和其他語法(例如:可見性修飾符)。

class person {
  // 聲明初始值,可省略類型注解(TS類型推論為string)
  name:'張三'
  // 聲明成員類型為 number 沒有初始值
  age: number
}
const p = new person()
p.name
p.age

構(gòu)造函數(shù)

在class構(gòu)造函數(shù)中,需要為構(gòu)造函數(shù)指定類型注解,否則會(huì)被隱式推斷為any,構(gòu)造函數(shù)不需要返回值類型。

class Person {
  name:string
  age:number
  constructor(name:string,age:number){
    this.name = name
    this.age = age 
  }
}
const p = new Person('張三',18)

在class的實(shí)例方法中,方法的類型注解(參數(shù)與返回值)與函數(shù)用法相同。

class Point {
  x=1
  y=2
  scale(n: number){
    this.x*=n
    this.y*=n
  }
}
const p = new Point()
p.scale(5)
console.log(p.x,p.y);// 5 10

class類的繼承

在class類的繼承中,提供了兩種類的繼承方式:1、extends(繼承父類)  2、implements(實(shí)現(xiàn)接口)。注意:JS中只有extends,而implements是TS提供的。

class Animal {
  move(){
    console.log('我是動(dòng)物');
  }
}
// 使用 extends 繼承父類
class Dog extends Animal {
  name='狗'
  say(){
    console.log('我是狗');
  }
}
const p = new Dog()
p.move()// 我是動(dòng)物
p.say()// 我是狗
console.log(p.name);// 狗
interface Animals {
  name: string
  say(): void
}
// Dog類繼承接口Animals,意味著Dog類必須提供Animals接口中指定的所有方法和屬性
class Dog implements Animals {
  name = 'hobble'
  say(): void {
    console.log('汪汪汪');
  }
}

可見修飾符

在class中,類的可見性可以使用TS來控制class的方法或?qū)傩詫?duì)于class外的代碼是否可見??梢娦孕揎椃ǎ?strong>public(公有的)、protected(受保護(hù)的)、private(私有的)。

class Animal1 {
  // 因?yàn)?public 是默認(rèn)可見的,所以可以直接忽略
  public move(){
    console.log('我是動(dòng)物');
  }
}
class Dog1 extends Animal1 {}
const p1 = new Dog1()
p1.move()// 我是動(dòng)物
 
 
class Animal2 {
  // 僅對(duì)其聲明的所在類和子類中(非實(shí)例對(duì)象)可見
  protected move(){
    console.log('我是動(dòng)物');
  }
  run(){
    this.move
  }
}
class Dog2 extends Animal2 {
  say(){
    this.move
  }
}
const p2 = new Dog2()
// p.move() 報(bào)錯(cuò)
 
 
class Animal3 {
  // private表示私有的,只在當(dāng)前類中可見,對(duì)實(shí)例對(duì)象以及子類是不可見的
  private move(){
    console.log('我是動(dòng)物');
  }
  run(){
    this.move
  }
}
class Dog3 extends Animal3 {
  say(){
    // this.move 報(bào)錯(cuò)
  }
}

只讀修飾符

除了可見修飾符之外,還有一個(gè)常見的修飾符就是:readonly(只讀修飾符)。readonly:表示只讀,用來防止在構(gòu)造函數(shù)之外對(duì)屬性進(jìn)行賦值。

 class Person {
  // 注意:只要是readonly來修飾的屬性,必須手動(dòng)提供明確屬性,否則就是字面量類型
  readonly age: number = 18
  constructor(age: number){
    this.age = age
  }
  setAge(){
    // 無法分配到 "age" ,因?yàn)樗侵蛔x屬性。
    // this.age = 20 
  }
 }

注意:readonly只能修飾屬性不能修飾方法。

在接口和{}表示的對(duì)象類型中,也可以使用 readonly 。

// 在接口中
interface People {
  readonly name: string
}
 
let obj: People = {
  name:'張三'
}
// obj.name = '李四' 報(bào)錯(cuò)
 
// 在對(duì)象中
let oj: { readonly name: string } = {
  name:'張三'
}
// oj.name = '李四' 報(bào)錯(cuò)

總結(jié)

到此這篇關(guān)于TypeScript中class類型實(shí)例講解的文章就介紹到這了,更多相關(guān)TypeScript class類型內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • JavaScript中for of和for in的區(qū)別詳解

    JavaScript中for of和for in的區(qū)別詳解

    對(duì)于初學(xué)者,我們或許只知道無論是for of還是for in他們都有一個(gè)功能那就是遍歷,至于具體的細(xì)節(jié)或許我們不是很清楚,那么接下來我們就來詳細(xì)的區(qū)分一下for of和for in他們之間的不同點(diǎn)和相同點(diǎn),需要的朋友可以參考下
    2023-06-06
  • 微信小程序?qū)崿F(xiàn)計(jì)算器小功能

    微信小程序?qū)崿F(xiàn)計(jì)算器小功能

    這篇文章主要為大家詳細(xì)介紹了微信小程序?qū)崿F(xiàn)計(jì)算器小功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-07-07
  • 基于JavaScript實(shí)現(xiàn)控制下拉列表

    基于JavaScript實(shí)現(xiàn)控制下拉列表

    這篇文章主要介紹了基于JavaScript實(shí)現(xiàn)控制下拉列表,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-05-05
  • JS關(guān)鍵字球狀旋轉(zhuǎn)效果的實(shí)例代碼

    JS關(guān)鍵字球狀旋轉(zhuǎn)效果的實(shí)例代碼

    這篇文章主要介紹了JS關(guān)鍵字球狀旋轉(zhuǎn)效果的實(shí)例代碼。需要的朋友可以過來參考下,希望對(duì)大家有所幫助
    2013-11-11
  • JavaScript訪問樣式表代碼

    JavaScript訪問樣式表代碼

    在web頁面中,我們經(jīng)常需要通過修改樣式(style)來達(dá)到更好的用戶體驗(yàn),需要的朋友可以參考下。
    2010-10-10
  • Javascript實(shí)現(xiàn)一朵從含苞到綻放的玫瑰

    Javascript實(shí)現(xiàn)一朵從含苞到綻放的玫瑰

    今天小編就為大家分享一篇關(guān)于Javascript實(shí)現(xiàn)一朵從含苞到綻放的玫瑰,小編覺得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來看看吧
    2019-03-03
  • Javascript函數(shù)的參數(shù)

    Javascript函數(shù)的參數(shù)

    本文給大家分享的是網(wǎng)易云課堂中金旭亮老師的課堂筆記,對(duì)于大家學(xué)習(xí)javascript非常有幫助,這里推薦給小伙伴們
    2015-07-07
  • JSON.parse 解析字符串出錯(cuò)的解決方法

    JSON.parse 解析字符串出錯(cuò)的解決方法

    程序中很多數(shù)據(jù)是動(dòng)態(tài)拼接而成的json數(shù)據(jù),最近在用json的時(shí)候老是現(xiàn)JSON.parse錯(cuò)誤
    2010-07-07
  • webpack4 從零學(xué)習(xí)常用配置(小結(jié))

    webpack4 從零學(xué)習(xí)常用配置(小結(jié))

    這篇文章主要介紹了webpack4 從零學(xué)習(xí)常用配置(小結(jié)),詳細(xì)的介紹了幾個(gè)核心部分,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2019-05-05
  • 淺析return false的正確使用

    淺析return false的正確使用

    “return false”之所以被誤用的如此厲害,是因?yàn)樗雌饋硐袷峭瓿闪宋覀兘唤o它的工作,瀏覽器不會(huì)再將我們重定向到href中的鏈接,表單也不會(huì)被繼續(xù)提交,但這么做到底有什么不對(duì)呢
    2013-11-11

最新評(píng)論