国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

typeScript 學習筆記(二)

這篇具有很好參考價值的文章主要介紹了typeScript 學習筆記(二)。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

類接口 · TypeScript 入門教程 (xcatliu.com)

十四.類

① 類

  • 類:定義了一件事物的抽象特點,包含它的屬性和方法
  • 對象:類的實例,通過new生成
  • 面向對象(OOP)的三大特性:封裝、繼承、多態(tài)
  • 封裝(Encapsulation):將對數據的操作細節(jié)隱藏起來,只暴露對外的接口。外界調用端不需要(也不可能)知道細節(jié),就能通過對外提供的接口來訪問該對象,同時也保證了外界無法任意更改對象內部的數據
  • 繼承(Inheritance):子類繼承父類,子類除了擁有父類的所有特性外,還有一些更具體的特性
  • 多態(tài)(Polymorphism):由繼承而產生了相關的不同的類,對同一個方法可以有不同的響應。比如?Cat?和?Dog?都繼承自?Animal,但是分別實現了自己的?eat?方法。此時針對某一個實例,我們無需了解它是?Cat?還是?Dog,就可以直接調用?eat?方法,程序會自動判斷出來應該如何執(zhí)行?eat
  • 存取器(getter & setter):用以改變屬性的讀取和賦值行為
  • 修飾符(Modifiers):修飾符是一些關鍵字,用于限定成員或類型的性質。比如?public?表示公有屬性或方法
  • 抽象類(Abstract Class):抽象類是供其他類繼承的基類,抽象類不允許被實例化。抽象類中的抽象方法必須在子類中被實現
  • 接口(Interfaces):不同類之間公有的屬性或方法,可以抽象成一個接口。接口可以被類實現(implements)。一個類只能繼承自另一個類,但是可以實現多個接口

TypeScript中類的用法

  • public:修飾的屬性或方法是公有的,可以在任何地方被訪問到,默認所有的屬性和方法都是?public?的
  • private:修飾的屬性或方法是私有的,不能在聲明它的類的外部訪問
  • protected??修飾的屬性或方法是受保護的,它和?private?類似,區(qū)別是它在子類中也是允許被訪問的
class Animal {
  public name;
  public constructor(name) {
    this.name = name;
  }
}

let a = new Animal('Jack');
console.log(a.name); // Jack
a.name = 'Tom';
console.log(a.name); // Tom

typeScript 學習筆記(二),學習,筆記

  • 使用private修飾的屬性或者方法,在子類中也是不允許訪問的

typeScript 學習筆記(二),學習,筆記

  • protected 修飾的,允許在子類中訪問

class Animal {
  protected name
  public constructor(name: string) {
    this.name = name
  }
}

class Cat extends Animal {
  constructor(name: string) {
    super(name)
    console.log(this.name)
  }
}
  • 構造函數修飾為 private 時,該類不允許被繼承或者實例化

typeScript 學習筆記(二),學習,筆記

  • 當構造函數修飾為??protected 時,該類只允許被繼承

typeScript 學習筆記(二),學習,筆記

參數屬性

  • 修飾符和readonly還可以使用在構造函數參數中,等同于類中定義該屬性同時給該屬性賦值,使代碼更簡潔
class Animal {
  // public name: string;
  public constructor(public name) {
    // this.name = name;
  }
}
  • readonly : 只讀屬性關鍵字,只允許出現在屬性聲明或索引簽名或構造函數中

typeScript 學習筆記(二),學習,筆記

  • ? 如果?readonly 和其他訪問修飾符同時存在的話,需要寫在其后面
class Animal {
  // public readonly name;
  public constructor(public readonly name) {
    // this.name = name;
  }
}

抽象類

abstract 用于定義抽象類和其中的抽象方法

(1)抽象類是不允許被實例化的

typeScript 學習筆記(二),學習,筆記

(2) 抽象類中的抽象方法必須被子類實現

abstract class Animal {
  public name
  public constructor(name: string) {
    this.name = name
  }
  public abstract sayHi(): any
}

class Cat extends Animal {
  public eat() {
    console.log(`${this.name} is eating.`)
  }
  public sayHi(): any {
    console.log(`Meow, My name is ${this.name}`)
  }
}

let cat = new Cat('Tom')

十五.類與接口

① 接口可以對類的一部分行為進行描述

② 類實現接口

  • 不同的類之間可以有一些共有的特性,就可以將這些特性提取為接口
  • 使用 implements 關鍵字來實現
  • 提高面對對象的靈活性
  • ?舉例

門是一個類,防盜門是門的子類,如果防盜門有一個報警器的功能,可以給防盜門添加一個報警方法,如果有另一個類:車,也有報警器的功能,就可以考慮把報警器提取出來,作為一個接口,防盜門和門都去實現它

interface Alarm {
  alert(): void
}

class Door {}

class SecurityDoor extends Door implements Alarm {
  alert() {
    console.log('SecurityDoor alert')
  }
}

class Car implements Alarm {
  alert() {
    console.log('Car alert')
  }
}
  • 一個類可以實現多個接口

typeScript 學習筆記(二),學習,筆記

③ 接口繼承接口

  • 接口與接口之間可以是繼承關系
  • 除了擁有alert方法以外,還擁有兩個新方法?lightOn?和?lightOff
interface Alarm {
  alert(): void
}

interface LightableAlarm extends Alarm {
  lightOn(): void
  lightOff(): void
}

④ 接口繼承類

typeScript 學習筆記(二),學習,筆記

  • 接口繼承類的時候,只會繼承它的實例屬性和實例方法

十六.泛型

① 泛型的概念

  • 泛型:定義函數,接口或類的時候,不預先指定具體的類型,而是在指定的時候再指定類型的一種特性
  • 在函數名后面添加了<T>, 其中T用來指代任意輸入的類型,在后面的輸入value:T 和輸出 Array<T> 中就可以使用了
function createArray<T>(length: number, value: T): Array<T> {
  let result: T[] = []
  for (let i = 0; i < length; i++) {
    result[i] = value
  }
  return result
}

console.log(createArray<string>(3, 'x'))
  • 可以定義多個類型參數
function swap<T, U>(tuple: [T, U]): [U, T] {
  return [tuple[1], tuple[0]]
}

console.log(swap([7, 'seven']))

② 泛型的約束

  • 在函數內部使用泛型變量的時候,由于事先不知道它是哪種類型,所以不能隨意的操作它的屬性或者方法

? ??typeScript 學習筆記(二),學習,筆記

  • 可以對泛型進行約束,只允許這個函數傳入那些包含length屬性的變量,這就是泛型約束

typeScript 學習筆記(二),學習,筆記

typeScript 學習筆記(二),學習,筆記

  • 多個類型參數之間可以互相約束

typeScript 學習筆記(二),學習,筆記

③ 泛型接口

interface CreateArrayFunc {
  <T>(length: number, value: T): Array<T>
}

let createArr: CreateArrayFunc
createArr = function <T>(length: number, value: T): Array<T> {
  let result: T[] = []
  for (let i = 0; i < length; i++) {
    result[i] = value
  }
  return result
}

console.log(createArr(3, 'x'))
  • 可以把泛型接口提前到接口名上

typeScript 學習筆記(二),學習,筆記

④ 泛型類: 泛型可以用于類的類型定義中

class GenericNumber<T> {
  zeroValue: T
  add: (x: T, y: T) => T
}

let myGenericNumber = new GenericNumber<number>()
myGenericNumber.zeroValue = 0
myGenericNumber.add = function (x, y) {
  return x + y
}

⑤ 泛型參數的默認類型

TypeScript 2.3 之后,就可以為泛型中的類型參數指定默認類型,當使用泛型時,沒有在代碼中直接指定類型參數,從實際值參數中也無法推測出時,這個默認類型就會起作用

typeScript 學習筆記(二),學習,筆記

十七.聲明合并

  • 如果定義了兩個相同名字的函數,接口或類,他們會合并成一個類型

① 函數的合并(重載)

function reverse(x: number): number;
function reverse(x: string): string;
function reverse(x: number | string): number | string {
    if (typeof x === 'number') {
        return Number(x.toString().split('').reverse().join(''));
    } else if (typeof x === 'string') {
        return x.split('').reverse().join('');
    }
}

② 接口的合并

typeScript 學習筆記(二),學習,筆記

  • 合并的屬性的類型必須是唯一的

typeScript 學習筆記(二),學習,筆記

typeScript 學習筆記(二),學習,筆記

③ 類的合并

類的合并與接口的合并規(guī)則一致

十八.編譯選項

① allowJs? 允許編譯js文件

  • 一般在項目js, ts混合開發(fā)中需要設置
  • 設置為true時,js文件會被tsc編譯,否則不會
  • 設置為true的時候,編譯后的文件包含foo.js
  • 設置為false的時候,編譯后的文件不包含foo.js

②?allowSyntheticDefaultImports??允許對不包含默認導出的模塊使用默認導入。這個選項不會影響生成的代碼,只會影響類型檢查文章來源地址http://www.zghlxwxcb.cn/news/detail-705317.html

  • 在ts中,如果要引入一個export = foo 導出的模塊,標準語法是??import foo = require('foo')? ?或者?import * as foo from 'foo'
  • 但是已經習慣使用?import foo from 'foo' ,所以使用了這個設置項
  • 如果設置為true, 就允許使用?import foo from 'foo' 來導入一個通過??export = foo 導出的模塊,當它設置為false時,則不允許,會報錯

到了這里,關于typeScript 學習筆記(二)的文章就介紹完了。如果您還想了解更多內容,請在右上角搜索TOY模板網以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網!

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。如若轉載,請注明出處: 如若內容造成侵權/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經查實,立即刪除!

領支付寶紅包贊助服務器費用

相關文章

  • TypeScript學習筆記(二)

    字符串字面量類型用來約束取值只能是某幾個字符串中的一個 數組:同一類型的集合 元祖:不同類型的集合 枚舉使用 enum 來定義 枚舉成員會被賦值為從 0 開始遞增的數字,同時也會對枚舉值到枚舉名進行反向映射 可以給枚舉項手動賦值: 未手動賦值的枚舉項與手動

    2023年04月09日
    瀏覽(21)
  • TypeScript 學習筆記(七):條件類型

    TypeScript 學習筆記(七):條件類型

    TS中的條件類型就是在類型中添加條件分支,以支持更加靈活的泛型,滿足更多的使用場景。內置條件類型是TS內部封裝好的一些類型處理,使用起來更加便利。 當T類型可以賦值給U類型時,則返回X類型,否則返回Y類型。 T U X Y 四個是占位符,分別表示四種類型; T extends U

    2024年02月17日
    瀏覽(22)
  • TypeScript 學習筆記(四):類型守衛(wèi)

    類型守衛(wèi)的作用在于觸發(fā)類型縮小。實際上,它還可以用來區(qū)分類型集合中的不同成員 類型守衛(wèi)包括switch、字面量恒等、typeof、instanceof、in 和自定義類型守衛(wèi) 簡單說當一個類型是多種可能時例如’any’,‘unknown’,‘聯合類型’ 等在邏輯判斷時候要具體到其唯一子集可能性

    2024年02月15日
    瀏覽(24)
  • 【TypeScript】基礎知識學習筆記

    TypeScript的特點: JavaScript的超集,滿足所有的JS語法 含有面向對象的靜態(tài)類型 起步安裝:1、npm i typescript -g 2、tsc 文件名 一、TS的基本數據類型 基本數據類型:number、boolean、string、undefined、null、symbol、bigint、void 當中的類型有大小寫的區(qū)分:大寫的類型是給對象使用,小寫

    2024年02月09日
    瀏覽(49)
  • TypeScript學習筆記以及學習中遇到的問題

    TypeScript學習筆記以及學習中遇到的問題

    本筆記是來自翻閱xcatliu的typeScript入門教程文檔、TypeScript官方文檔的部分摘錄、以及觀看B站學習視頻進行筆記記錄與知識點補充、本人實際使用時遇到的問題與解決記錄、碎片化接觸到相關知識點合并整理而成 TypeScript 的命令行工具安裝方法如下: 以上命令會在全局環(huán)境下

    2023年04月24日
    瀏覽(22)
  • 【鴻蒙系統(tǒng)學習筆記】TypeScript開發(fā)語言

    【鴻蒙系統(tǒng)學習筆記】TypeScript開發(fā)語言

    HarmonyOS 應用的主要開發(fā)語言是 ArkTS,它由 TypeScript(簡稱TS)擴展而來,在繼承TypeScript語法的基礎上進行了一系列優(yōu)化,使開發(fā)者能夠以更簡潔、更自然的方式開發(fā)應用。值得注意的是,TypeScript 本身也是由另一門語言 JavaScript 擴展而來。因此三者的關系如下圖所示 2.1.1、線

    2024年02月19日
    瀏覽(26)
  • [學習筆記]TypeScript查缺補漏(一):類

    類既可以作為類型使用,也可以作為值使用。 JSDoc 是 JavaScript 的一種注釋規(guī)范,它使用特定的注釋格式來自動生成 API 文檔。JSDoc 通過注釋來提取信息,例如函數名、參數類型和返回類型等,然后使用這些信息生成人類可讀的文檔。 示例: 在這個例子中,/** 開始一個多行注

    2024年02月06日
    瀏覽(16)
  • TypeScript 學習筆記(六):索引簽名類型、映射類型

    TypeScript 學習筆記(六):索引簽名類型、映射類型

    keyof 可以用于獲取某種類型的所有鍵,其返回類型是聯合類型。 keyof 與 Object.keys 略有相似,只不過 keyof 取 interface 的鍵 通過例子可以看到,這里的keyof Info其實相當于\\\"name\\\" | “age”。通過和泛型結合使用,TS 就可以檢查使用了動態(tài)屬性名的代碼: 接口 基本數據類型 類 如果

    2024年02月17日
    瀏覽(26)
  • Vite+Typescript+Vue3學習筆記

    Vite+Typescript+Vue3學習筆記

    1.1、創(chuàng)建項目(yarn) 1.2、項目配置 1、配置vue文件識別 vite默認情況下不識別.vue后綴的文件,需在vite-env.d.ts配置下 2、Api選擇 Vue3推薦使用Composition API,這里關閉Vue2的Option Api 1.3、常用依賴 1、@types/node ts需安裝node的類型,否則使用node相關會提示找不到 2、auto-import 用于簡化Vu

    2024年02月15日
    瀏覽(29)
  • TypeScript 學習筆記(二):接口與類型別名、字面量類型

    TypeScript 學習筆記(二):接口與類型別名、字面量類型

    在面向對象的編程中,接口是一種規(guī)范的定義,它定義了行為和動作的規(guī)范,在程序設計里面,接口起到一種限制和規(guī)范的作用。接口定義了某一批類所需要遵守的規(guī)范,接口不關心這些類的內部狀態(tài)數據,也不關心這些類里方法的實現細節(jié),它只規(guī)定這批類里必須提供某些

    2024年02月16日
    瀏覽(23)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領取紅包,優(yōu)惠每天領

二維碼1

領取紅包

二維碼2

領紅包