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

【TypeScript】TS接口interface類型(三)

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


【TypeScript】接口interface類型(三)


【TypeScript】TS接口interface類型(三),TypeScript實踐應(yīng)用,typescript,ubuntu,javascript

一、前言

TypeScript的核心原則之一是對值所具有的結(jié)構(gòu)進行類型檢查。 它有時被稱做“鴨式辨型法”或“結(jié)構(gòu)性子類型化”。 在TypeScript里,接口的作用就是為這些類型命名和為你的代碼或第三方代碼定義契約。這些方法都應(yīng)該是抽象的,需要由具體的類去實現(xiàn),然后第三方就可以通過這組抽象方法調(diào)用,讓具體的類執(zhí)行具體的方法。

二、語法定義

語法:使用 interface 關(guān)鍵字開頭,定義類型對象,其中可以包含字符串和函數(shù)類型

典型的定義與使用參考下面:

interface Person {
  name: string;
  age: number;
  sayHi(): void;
}

const person: Person = {
  name: "Alice",
  age: 30,
  sayHi() {
    console.log(`Hi, my name is ${this.name} and I'm ${this.age} years old.`);
  }
};

三、具體使用及規(guī)則限制
3.1 可選屬性

接口里的屬性不全都是必需的。 有些是只在某些條件下存在,或者根本不存在。 可選屬性在應(yīng)用“option bags”模式時很常用,即給函數(shù)傳入的參數(shù)對象中只有部分屬性賦值了。

下面我們來給Person定義一個接口,其中有些屬性是可選的

interface Person {
    name: string,
    age: number,
    studentNo?: string
}

let persn1: Person = {
    name: 'suwu150',
    age: 24,
    studentNo: '13240124'
}
let person2: Person = {
    name: 'suwu150',
    age: 24,
}

以上就是一個可選屬性的添加,studentNo這個屬性可以有,也可以不用賦值。我們編譯后,能夠看到如下結(jié)果:
【TypeScript】TS接口interface類型(三),TypeScript實踐應(yīng)用,typescript,ubuntu,javascript
這個Person接口,也能作為參數(shù)傳遞給函數(shù)使用,其中也能按照可選參數(shù)進行處理。

3.2 只讀屬性

有時候我們需要指定一個屬性只能在定義的時候賦值,其他情況下只能讀取,不能再次修改,那就需要處理為只讀屬性。
可以通過在屬性名前添加 readonly 關(guān)鍵字來指定只讀屬性,只讀屬性只能在創(chuàng)建的時候?qū)ζ滟x值,一旦創(chuàng)建完成,就再也不能更改

語法:readonly + 屬性名

interface Person {
  readonly name: string,
      age: string
}

let person: Person = {
  name: 'suwu150',
  age: 28
};

person.name = '張三'; // Cannot assign to 'name' because it is a read-only property. 
person.age = 30;

編譯器中編譯運行,會發(fā)現(xiàn)

  • age 能夠正常賦值,不會提示錯誤
  • name報錯,提示是只讀屬性,不能夠再次賦值

【TypeScript】TS接口interface類型(三),TypeScript實踐應(yīng)用,typescript,ubuntu,javascript

3.3 可索引的類型

可索引類型具有一個_索引簽名_,它描述了對象索引的類型,還有相應(yīng)的索引返回值類型。

  • 描述通過索引獲取的元素或?qū)傩?,形?Score[0]、Score[‘name’]

簡單看下索引值定義的??例子:

interface Score {
 [index: number]: number          
}

let score: Score = [23,65,99,20];

console.log(score);
console.log(score[2]);

我們定義了Score接口,具有索引簽名。
以上表示當(dāng)用 number 去索引 Score 接口時,會返回結(jié)果為number類型的值。

需要注意的是TypeScript支持兩種索引簽名: 字符串數(shù)字。下面來看看使用數(shù)字索引和字符串索引的結(jié)果。

interface Person {
 [key: number]: number          
}

interface Student {
 [key: number]: string          
}

let person: Person = [23,65,99,20];
let student: Student = ['23','65','99','20'];

console.log(person);
console.log(student)
console.log(person[2]);
console.log(person['2']);
console.log(student[2]);
console.log(student['2']);

從上面的結(jié)果能夠看出,字符串和數(shù)字獲取到的是同一個值,這是因為當(dāng)使用 number來索引時,JavaScript會將它轉(zhuǎn)換成string然后再去索引對象。

3.4 函數(shù)類型

接口能夠描述JavaScript中對象擁有的各種各樣的外形。 除了描述帶有屬性的普通對象外,接口也可以描述函數(shù)類型。

為了使用接口表示函數(shù)類型,我們需要給接口定義一個調(diào)用簽名。 它就像是一個只有參數(shù)列表和返回值類型的函數(shù)定義。參數(shù)列表里的每個參數(shù)都需要名字和類型。

函數(shù)類型使用語法:

interface 接口名 {
  (參數(shù)名): 返回值;
}

可以看看簡單的接口中使用函數(shù)類型的實例

interface SetName {
  (newName: string): string;
}

let setname: SetName;
setname = (name: string) => {
    console.log(name);
    return name
};

setname('new suwu150');

編譯運行看看:

【TypeScript】TS接口interface類型(三),TypeScript實踐應(yīng)用,typescript,ubuntu,javascript

在使用函數(shù)類型類型時,需要注意定義的參數(shù)名可以不一致,但參數(shù)類型得保持一致。

3.5 類類型

類類型是TypeScript中比較常規(guī)的一種類型,接口的使用也離不開類類型的使用。
和其他靜態(tài)編譯語言中類似,TypeScript也能夠用它來明確的強制一個類去符合某種契約。

interface Person {
  name: string
}

class Student implements Person {
  name = '';
  constructor(h: number, m: number) { }
}

以上就是一個典型的類類型的接口的使用,如果我們不在Student中初始化name,則會在編譯階段提示屬性缺失
【TypeScript】TS接口interface類型(三),TypeScript實踐應(yīng)用,typescript,ubuntu,javascript
同樣的,不僅僅在接口中能夠?qū)崿F(xiàn)屬性的定義,也能夠定義方法。




以上就是TypeScript接口類型介紹,希望喜歡的同學(xué)點贊加收藏,謝謝。

文章來源地址http://www.zghlxwxcb.cn/news/detail-627539.html


到了這里,關(guān)于【TypeScript】TS接口interface類型(三)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

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

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • 【TypeScript】TS條件類型(十)

    【TypeScript】TS條件類型(十)

    ?? 個人主頁: 不叫貓先生 ???♂? 作者簡介:2022年度博客之星前端領(lǐng)域TOP 2,前端領(lǐng)域優(yōu)質(zhì)作者、阿里云專家博主,專注于前端各領(lǐng)域技術(shù),共同學(xué)習(xí)共同進步,一起加油呀! ??優(yōu)質(zhì)專欄:vue3從入門到精通、TypeScript從入門到實踐 ?? 資料領(lǐng)?。呵岸诉M階資料以及文中源

    2023年04月11日
    瀏覽(22)
  • 【TypeScript】TS類型聲明(二)

    【TypeScript】TS類型聲明(二)

    ??個人主頁: 不叫貓先生 ???♂?作者簡介:前端領(lǐng)域新星創(chuàng)作者、華為云享專家、阿里云專家博主,專注于前端各領(lǐng)域技術(shù),共同學(xué)習(xí)共同進步,一起加油呀! ??系列專欄:vue3從入門到精通、TypeScript從入門到實踐 ??個人簽名:不破不立 TypeScript從入門到實踐專欄 是博

    2024年01月20日
    瀏覽(25)
  • 【TypeScript】TS類型守衛(wèi)(六)

    【TypeScript】TS類型守衛(wèi)(六)

    ??個人主頁: 不叫貓先生 ???♂?作者簡介:前端領(lǐng)域優(yōu)質(zhì)創(chuàng)作者、阿里云專家博主,專注于前端各領(lǐng)域技術(shù),共同學(xué)習(xí)共同進步,一起加油呀! ??系列專欄:vue3從入門到精通、TypeScript從入門到實踐 ??個人簽名:不破不立 ??資料領(lǐng)?。呵岸诉M階資料以及文中源碼可以

    2024年02月22日
    瀏覽(23)
  • TypeScript 中【class類】與 【 接口 Interfaces】的聯(lián)合搭配使用解讀

    TypeScript 中【class類】與 【 接口 Interfaces】的聯(lián)合搭配使用解讀

    導(dǎo)讀 : 前面章節(jié),我們講到過 接口(Interface)可以用于對「對象的形狀(Shape)」進行描述。 本章節(jié)主要介紹接口的另一個用途,對類的一 部分行為進行抽象。 類配合實現(xiàn)接口 實現(xiàn)( implements )是面向?qū)ο笾械囊粋€重要概念。 一般來講,一個類只能繼承自另一個類 ,但

    2024年02月14日
    瀏覽(19)
  • TypeScript基礎(chǔ)篇 - TS日常類型 上篇

    目錄 TS的常見用法介紹 ?example01.ts 逃避類型檢查:any 思考一下~:不知道類型 類型標(biāo)注 函數(shù)(參數(shù)和返回值) 匿名函數(shù) TS如何知道匿名函數(shù)的類型? TS是一種標(biāo)注式語言,不侵入JS的設(shè)計 文章內(nèi)容 基礎(chǔ)類型、數(shù)組 any/unkown 類型標(biāo)注 函數(shù) 對象類型 聯(lián)合 別名 接口 斷言 字面

    2024年02月16日
    瀏覽(24)
  • 【TypeScript】TS類型斷言-類型的聲明和轉(zhuǎn)換(五)

    【TypeScript】TS類型斷言-類型的聲明和轉(zhuǎn)換(五)

    ??個人主頁: 不叫貓先生 ???♂?作者簡介:前端領(lǐng)域新星創(chuàng)作者、華為云享專家、阿里云專家博主,專注于前端各領(lǐng)域技術(shù),共同學(xué)習(xí)共同進步,一起加油呀! ??系列專欄:vue3從入門到精通、TypeScript從入門到實踐 ??個人簽名:不破不立 ??資料領(lǐng)取:前端進階資料以

    2024年02月22日
    瀏覽(23)
  • Typescript - 通俗易懂的 interface 接口,創(chuàng)建接口 / 基礎(chǔ)使用 / 可選屬性 / 只讀屬性 / 任意屬性(詳細教程)

    在面向?qū)ο笳Z言中,接口是一個很重要的概念,它是對行為的抽象,而具體如何行動需要由類去實現(xiàn)。 TypeScript 中的接口是一個非常靈活的概念,除了可用于 對類的一部分行為進行抽象 以外,也常用于對「對象的形狀(Shape)」進行描述。 ?TypeScript 的核心原則之一是對值所

    2023年04月15日
    瀏覽(26)
  • 前端TypeScript學(xué)習(xí)day02-TS常用類型

    前端TypeScript學(xué)習(xí)day02-TS常用類型

    (創(chuàng)作不易,感謝有你,你的支持,就是我前行的最大動力,如果看完對你有幫助,請留下您的足跡) 目錄 TypeScript 常用類型 接口? 元組? 類型推論 類型斷言 字面量類型 枚舉 any 類型 typeof? 當(dāng)一個對象類型被多次使用時,一般會使用接口(interface)來描述對象的類型,達到

    2024年02月08日
    瀏覽(28)
  • 前端TypeScript學(xué)習(xí)day03-TS高級類型

    前端TypeScript學(xué)習(xí)day03-TS高級類型

    (創(chuàng)作不易,感謝有你,你的支持,就是我前行的最大動力,如果看完對你有幫助,請留下您的足跡) ? ? ? ? ?? 目錄 TypeScript 高級類型 class 類 class繼承? extends implements? 類成員可見性? public? protected? private? ?readonly 兼容性 類型兼容性 接口兼容性? 函數(shù)兼容性? TypeScri

    2024年02月08日
    瀏覽(20)
  • TypeScript必知三部曲(一)TypeScript編譯方案以及IDE對TS的類型檢查

    TypeScript必知三部曲(一)TypeScript編譯方案以及IDE對TS的類型檢查

    TypeScript代碼的編譯過程一直以來會給很多小伙伴造成困擾,typescript官方提供tsc對ts代碼進行編譯,babel也表示能夠編譯ts代碼,它們二者的區(qū)別是什么?我們應(yīng)該選擇哪種方案?為什么IDE打開ts項目的時候,就能有這些ts代碼的類型定義?為什么明明IDE對代碼標(biāo)紅報錯,但代碼

    2023年04月08日
    瀏覽(22)

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

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

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包