日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不

當前位置:首頁 > 科技  > 軟件

TypeScript 中的類型與接口

來源: 責編: 時間:2024-05-16 09:10:36 202觀看
導讀在 TypeScript 中,定義類型有兩種方式:“類型”和“接口”。人們經常想知道該使用哪一種,答案并非適用于所有情況。有時一種更好,但在許多情況下,兩者可以互換使用。我們來詳細了解一下類型和接口的不同點和相似點。類型和

在 TypeScript 中,定義類型有兩種方式:“類型”和“接口”。OBP28資訊網——每日最新資訊28at.com

人們經常想知道該使用哪一種,答案并非適用于所有情況。有時一種更好,但在許多情況下,兩者可以互換使用。OBP28資訊網——每日最新資訊28at.com

我們來詳細了解一下類型和接口的不同點和相似點。OBP28資訊網——每日最新資訊28at.com

類型和類型別名

在 TypeScript 中,我們有一種叫做“類型”的東西,它幫助我們描述我們正在處理的數據類型。這就像為我們的信息提供一個藍圖。OBP28資訊網——每日最新資訊28at.com

基本類型包括字符串、布爾值、數字、數組、元組和枚舉。OBP28資訊網——每日最新資訊28at.com

但是,還有更多!我們還有“類型別名”。可以把它們想象成類型的昵稱。我們不是在創建新類型;我們只是給它們起了更友好的名稱。這使我們的代碼更容易閱讀和理解。OBP28資訊網——每日最新資訊28at.com

例如,我們可以為數字創建一個叫做“我的數字”的類型別名,所以我們可以不用寫“數字”,只需要說“我的數字”。OBP28資訊網——每日最新資訊28at.com

我們還可以為用戶數據創建一個類型別名,描述一個用戶的數據應該是什么樣子。OBP28資訊網——每日最新資訊28at.com

當人們討論“類型與接口”時,他們實際上是在討論“類型別名與接口”。這就像給同一組事物起了不同的名稱。OBP28資訊網——每日最新資訊28at.com

TypeScript 中的接口

在 TypeScript 中,可以將接口視為一個對象必須遵循的規則或要求集合。這就像一份合約,說:“嘿,如果你想成為‘客戶’,你必須有‘名稱’和‘地址’。”OBP28資訊網——每日最新資訊28at.com

現在,還有另一種表達這些規則的方法。你可以使用所謂的“類型注解”。這有點像說,“這里是‘客戶’應該長什么樣子”,然后列出‘名稱’和‘地址’屬性及其類型,就像你在接口中所做的那樣。OBP28資訊網——每日最新資訊28at.com

所以,無論你使用接口還是類型注解,你本質上都在定義同樣的期望集合,對于‘客戶’應該是什么樣子。這就像給同一組指令起了兩個不同的名字。OBP28資訊網——每日最新資訊28at.com

類型和接口的區別

類型和接口用于定義自定義數據結構和形狀,但它們在行為和使用上有一些差異。OBP28資訊網——每日最新資訊28at.com

原始類型

使用類型:OBP28資訊網——每日最新資訊28at.com

type MyNumber = number;

在這種情況下,我們創建了一個類型別名 MyNumber,它是 number 原始類型的別名。OBP28資訊網——每日最新資訊28at.com

使用接口:OBP28資訊網——每日最新資訊28at.com

你不能使用接口直接定義像 number 這樣的原始類型。它們在 TypeScript 中是預定義的。OBP28資訊網——每日最新資訊28at.com

聯合類型

使用類型:OBP28資訊網——每日最新資訊28at.com

type MyUnionType = number | string;

在這里,我們定義了一個類型 MyUnionType,它可以包含 number 或 string 的值。OBP28資訊網——每日最新資訊28at.com

使用接口:OBP28資訊網——每日最新資訊28at.com

接口通常不用于直接表示聯合類型。你應該使用類型別名來表示這種用途。OBP28資訊網——每日最新資訊28at.com

函數類型

使用類型:OBP28資訊網——每日最新資訊28at.com

type MyFunctionType = (arg1: number, arg2: string) => boolean;

這定義了一個類型 MyFunctionType,用于一個函數,該函數接受兩個參數,一個數字和一個字符串,并返回一個布爾值。OBP28資訊網——每日最新資訊28at.com

使用接口:OBP28資訊網——每日最新資訊28at.com

interface MyFunctionInterface {  (arg1: number, arg2: string): boolean;}

這個接口 MyFunctionInterface 表示相同的函數類型。OBP28資訊網——每日最新資訊28at.com

聲明合并

使用接口:OBP28資訊網——每日最新資訊28at.com

interface Person {  name: string;}interface Person {  age: number;}

TypeScript 將自動將這兩個 Person 接口合并為一個,包含 name 和 age 的屬性。OBP28資訊網——每日最新資訊28at.com

使用類型:OBP28資訊網——每日最新資訊28at.com

類型別名不支持聲明合并。如果你多次定義相同的類型別名,將導致錯誤。OBP28資訊網——每日最新資訊28at.com

擴展 vs. 交叉

使用擴展:OBP28資訊網——每日最新資訊28at.com

interface A { propA: number; }interface B extends A { propB: string; }

接口 B 擴展了接口 A,繼承了 propA 屬性并添加了新的屬性 propB。OBP28資訊網——每日最新資訊28at.com

使用交叉:OBP28資訊網——每日最新資訊28at.com

type AB = A & { propB: string; }

在這里,我們使用交叉來組合 A 的屬性和新屬性 propB,以創建類型 AB。OBP28資訊網——每日最新資訊28at.com

擴展時處理沖突

TypeScript 要求擴展時具有相同名稱的屬性的類型匹配:OBP28資訊網——每日最新資訊28at.com

interface A { commonProp: number; }interface B { commonProp: string; }interface AB extends A, B { }// 錯誤: A 和 B 中的 'commonProp' 屬性必須具有相同的類型

typescript要解決沖突,你需要確保類型匹配或使用函數的方法重載。OBP28資訊網——每日最新資訊28at.com

處理元組類型

使用類型:OBP28資訊網——每日最新資訊28at.com

type MyTupleType = [number, string];const tuple: MyTupleType = [42, "hello"];

在這里,我們使用 type 定義了一個元組類型,然后我們可以創建該元組類型的變量。OBP28資訊網——每日最新資訊28at.com

使用接口:OBP28資訊網——每日最新資訊28at.com

interface MyTupleInterface {  0: number;  1: string;}const tuple: MyTupleInterface = [42, "hello"];

你也可以使用接口定義元組類型,使用方式保持不變。OBP28資訊網——每日最新資訊28at.com

何時使用類型 vs. 接口

當你需要組合或修改現有結構時,使用接口。如果你在處理庫或創建新的庫,接口是你的首選。OBP28資訊網——每日最新資訊28at.com

它們允許你合并或擴展聲明,使得與現有代碼一起工作更加容易。當你以面向對象編程的方式思考時,接口也更易讀。OBP28資訊網——每日最新資訊28at.com

當你需要更強大的功能時,選擇類型。TypeScript 的類型系統提供了諸如條件類型、泛型、類型保護等高級工具。OBP28資訊網——每日最新資訊28at.com

這些功能為你提供了更多控制你的類型的方式,幫助你創建健壯、強類型的應用程序。接口無法提供這些能力。OBP28資訊網——每日最新資訊28at.com

你通常可以根據個人喜好使用類型或接口。然而,在以下情況下使用類型別名:OBP28資訊網——每日最新資訊28at.com

  • ? 當你想為基本數據類型(如‘字符串’或‘數字’)創建一個新名稱時。
  • ? 當定義更復雜的類型如聯合、元組或函數時。
  • ? 當重載函數時。
  • ? 當使用高級功能如映射類型、條件類型或類型保護時。

類型通常更靈活和表達性強。它們提供了一系列接口無法匹敵的高級功能,而 TypeScript 持續擴展其能力。OBP28資訊網——每日最新資訊28at.com

我們使用類型別名自動生成一個對象類型的 getter 方法,這是你無法通過接口做到的:OBP28資訊網——每日最新資訊28at.com

type Client = {    name: string;    address: string;}type Getters<T> = {    [K in keyof T as `get${Capitalize<string & K>}`]: () => T[K];};type clientType = Getters<Client>;// 結果是: // {//     getName: () => string;//     getAddress: () => string;// }

通過使用映射類型、模板文字和‘keyof’操作符,我們創建了一個類型,它可以為任何對象類型自動生成 getter 方法。OBP28資訊網——每日最新資訊28at.com

此外,許多開發者更喜歡使用類型,因為它們與函數式編程范式很契合。OBP28資訊網——每日最新資訊28at.com

TypeScript 中類型表達式的豐富性使得在保持類型安全的同時,更容易與函數式概念如組合和不變性一起工作。OBP28資訊網——每日最新資訊28at.com

本文鏈接:http://m.www897cc.com/showinfo-26-88396-0.htmlTypeScript 中的類型與接口

聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。郵件:2376512515@qq.com

上一篇: 聊聊主流的Kafka監控框架

下一篇: React 全新編譯器太好用了!

標簽:
  • 熱門焦點
  • Redmi Pad評測:紅米充滿野心的一次嘗試

    從Note系列到K系列,從藍牙耳機到筆記本電腦,紅米不知不覺之間也已經形成了自己頗有競爭力的產品體系,在中端和次旗艦市場上甚至要比小米新機的表現來得更好,正所謂“大丈夫生居
  • 5月iOS設備好評榜:iPhone 14僅排第43?

    來到新的一月,安兔兔的各個榜單又重新匯總了數據,像安卓陣營的榜單都有著比較大的變動,不過iOS由于設備的更新換代并沒有那么快,所以相對來說變化并不大,特別是iOS好評榜,老款設
  • Rust中的高吞吐量流處理

    作者 | Noz編譯 | 王瑞平本篇文章主要介紹了Rust中流處理的概念、方法和優化。作者不僅介紹了流處理的基本概念以及Rust中常用的流處理庫,還使用這些庫實現了一個流處理程序
  • 谷歌KDD'23工作:如何提升推薦系統Ranking模型訓練穩定性

    谷歌在KDD 2023發表了一篇工作,探索了推薦系統ranking模型的訓練穩定性問題,分析了造成訓練穩定性存在問題的潛在原因,以及現有的一些提升模型穩定性方法的不足,并提出了一種新
  • 三萬字盤點 Spring 九大核心基礎功能

    大家好,我是三友~~今天來跟大家聊一聊Spring的9大核心基礎功能。話不多說,先上目錄:圖片友情提示,本文過長,建議收藏,嘿嘿嘿!一、資源管理資源管理是Spring的一個核心的基礎功能,不
  • 國行版三星Galaxy Z Fold5/Z Flip5發布 售價7499元起

    2023年8月3日,三星電子舉行Galaxy新品中國發布會,正式在國內推出了新一代折疊屏智能手機三星Galaxy Z Fold5與Galaxy Z Flip5,以及三星Galaxy Tab S9
  • 三星電子Q2營收60萬億韓元 存儲業務營收同比仍下滑超過50%

    7月27日消息,據外媒報道,從三星電子所發布的財報來看,他們主要利潤來源的存儲芯片業務在今年二季度仍不樂觀,營收同比仍在大幅下滑,所在的設備解決方案
  • 質感不錯!OPPO K11渲染圖曝光:旗艦IMX890傳感器首次下放

    一直以來,OPPO K系列機型都保持著較為均衡的產品體驗,歷來都是2K價位的明星機型,去年推出的OPPO K10和OPPO K10 Pro兩款機型憑借各自的出色配置,堪稱有
  • 電博會與軟博會實現"線下+云端"的雙線融合

    在本次“電博會”與“軟博會”雙展會利好條件的加持下,既可以發揮展會拉動人流、信息流、資金流實現快速交互流動的作用,繼而推動區域經濟良性發展;又可以聚
Top 日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不
国一区二区在线观看| 国产精品久久久久婷婷| 久久久久久免费| 老**午夜毛片一区二区三区| 欧美成人69| 欧美日韩中文在线| 国产美女精品免费电影| 在线播放亚洲一区| 亚洲精品视频中文字幕| 一区二区电影免费在线观看| 亚洲欧美韩国| 久久视频免费观看| 欧美日韩精品免费观看| 国产女主播一区二区| 在线日本成人| 亚洲少妇中出一区| 久久综合伊人77777| 欧美日韩激情网| 国产日韩精品一区二区三区在线 | 免费亚洲婷婷| 国产精品久久波多野结衣| 激情综合五月天| 亚洲视频在线观看| 蜜臀av性久久久久蜜臀aⅴ四虎| 欧美天天视频| 在线日韩日本国产亚洲| 亚洲视频自拍偷拍| 可以免费看不卡的av网站| 国产精品久久久一本精品| 在线日韩视频| 欧美一区二区三区四区在线观看地址| 欧美国产在线观看| 国内精品视频666| 亚洲性视频h| 欧美激情视频在线播放| 国产欧美精品一区aⅴ影院| 亚洲麻豆视频| 久久一区中文字幕| 国产精品一区二区三区四区 | 亚洲电影自拍| 欧美一区二区久久久| 欧美日韩精品免费观看视频完整| 精品成人在线视频| 午夜一区不卡| 欧美视频官网| 亚洲美女电影在线| 麻豆91精品| 国内成人精品视频| 亚洲欧美另类国产| 欧美日韩精品在线观看| 亚洲国产精品欧美一二99| 久久精品一区二区三区不卡牛牛| 国产精品久久久久久久7电影 | 卡一卡二国产精品| 国内视频一区| 午夜免费久久久久| 欧美亚州韩日在线看免费版国语版| 亚洲国产综合91精品麻豆| 久久久国产亚洲精品| 国产精品永久免费视频| 中文一区二区在线观看| 欧美日韩国产综合视频在线观看中文| 亚洲国产成人精品女人久久久| 久久精品色图| 国产一区二区成人久久免费影院| 亚洲欧美国产三级| 国产精品久久久久9999高清| 中文av字幕一区| 欧美日韩一区二区三区高清| 99精品视频免费| 欧美日韩91| 99国产成+人+综合+亚洲欧美| 欧美黑人国产人伦爽爽爽| 亚洲国产婷婷| 蜜桃av综合| 亚洲国产精品福利| 美女黄网久久| 亚洲高清在线观看一区| 浪潮色综合久久天堂| 影音国产精品| 乱码第一页成人| 91久久久久久久久久久久久| 欧美成人性网| 亚洲精品一区在线| 欧美日韩亚洲一区二区三区四区| 9i看片成人免费高清| 欧美日韩一区在线| 亚洲午夜电影| 国产精品天天看| 欧美专区在线| 一区一区视频| 欧美成人资源网| 99成人在线| 国产精品国产三级国产aⅴ浪潮 | 亚洲欧美日韩视频二区| 国产女主播一区二区| 欧美一区二区三区另类| 国精品一区二区三区| 另类人畜视频在线| 亚洲精品国精品久久99热一| 欧美日韩伦理在线免费| 亚洲午夜久久久久久久久电影网| 国产精品久久久久一区二区三区共 | 国产精品99久久99久久久二8| 欧美亚洲成人免费| 香蕉乱码成人久久天堂爱免费| 国产视频精品va久久久久久| 久久精品视频导航| 亚洲高清在线视频| 欧美日韩国产成人在线91| 亚洲一级电影| 国产一区在线播放| 女生裸体视频一区二区三区| 99re亚洲国产精品| 国产欧美日韩综合一区在线观看 | 一区二区三区在线视频观看| 欧美成人午夜剧场免费观看| 一本久久青青| 国产婷婷成人久久av免费高清| 久久久久久久久蜜桃| 亚洲欧洲精品一区二区精品久久久 | 欧美日韩午夜在线| 性欧美1819性猛交| 亚洲国产高清在线观看视频| 欧美三区免费完整视频在线观看| 亚洲欧美日韩中文在线制服| 狠狠色综合色区| 欧美日韩久久久久久| 久久精品国产亚洲高清剧情介绍| 亚洲精品黄色| 国产精品一二三四| 毛片av中文字幕一区二区| 99精品视频网| 国产日韩欧美综合精品| 久久综合久久美利坚合众国| 正在播放欧美视频| 韩国一区二区三区美女美女秀| 欧美激情一级片一区二区| 亚洲欧美日韩精品综合在线观看| 在线免费一区三区| 国产精品亚洲产品| 欧美大片免费观看| 欧美一区二区成人| 99成人免费视频| 在线观看欧美日韩| 国产精品视频精品视频| 欧美成人一品| 久久久精品久久久久| 一区二区三区四区五区视频| 一区精品在线| 国产精品视频免费在线观看| 欧美激情精品久久久| 久久久久久久成人| 亚洲尤物视频网| 亚洲片区在线| 国模私拍一区二区三区| 欧美亚男人的天堂| 欧美精品啪啪| 久久综合九色综合欧美就去吻| 亚洲欧美日本国产有色| 亚洲人成网站精品片在线观看 | 国产午夜精品理论片a级探花| 欧美精品在线免费播放| 久久手机精品视频| 欧美亚洲在线观看| 一区二区三区.www| 亚洲黄色视屏| 在线精品视频在线观看高清| 国产精品综合视频| 欧美午夜视频网站| 欧美精品在线视频观看| 国产亚洲精品一区二区| 国产精品igao视频网网址不卡日韩| 免费高清在线一区| 久久久久国内| 欧美在线啊v| 亚洲欧美日韩综合| 中文在线不卡视频| 一区二区三区四区国产| 亚洲人精品午夜在线观看| 伊人久久综合97精品| 国产一区二区精品丝袜| 国产精品综合久久久| 国产精品久久久一区二区三区| 欧美激情1区2区| 欧美成人午夜77777| 欧美va亚洲va国产综合| 久色婷婷小香蕉久久| 久久亚洲国产精品日日av夜夜| 欧美一进一出视频| 亚洲欧美一区二区三区极速播放| 亚洲视频在线观看视频| 正在播放亚洲一区| 亚洲视频中文| 亚洲一二三级电影| 亚洲一区在线看| 亚洲一区二区综合| 亚洲一区二区视频| 亚洲一区二区三区乱码aⅴ| 一区二区三区精品在线| 一区二区三区日韩欧美精品| 一区二区三区高清视频在线观看 | 欧美福利在线| 欧美日韩国产精品专区|