日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

公告:魔扣目錄網(wǎng)為廣大站長提供免費(fèi)收錄網(wǎng)站服務(wù),提交前請做好本站友鏈:【 網(wǎng)站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(wù)(50元/站),

點(diǎn)擊這里在線咨詢客服
新站提交
  • 網(wǎng)站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會(huì)員:747

【CSDN 編者按】Type 算是一種編程語言嗎?來看看你是否真的了解Type 和 JAVA 的區(qū)別以及它的使用場景。‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍

原文鏈接:https://chrlschn.dev/blog/2023/09/type-is-not-a-programming-language/#understanding-type-vs-shape

作者 | Charles Chen

譯者|Ric Guan 責(zé)編 | 屠敏

出品 | CSDN(ID:CSDNnews)

最近,一個(gè) Mastodon 帖子讓我陷入沉思,我在想為什么 Type 成為了一些開發(fā)人員難以采用的語言。

我的結(jié)論是,它從名字開始:“Type”,人們就誤解它只是靜態(tài)類型的 Java。

但實(shí)際上,它不是。

不將 Type 視為一種編程語言甚至類型系統(tǒng)可能更容易。事實(shí)上,了解 Type 的最簡單方法就是將其視為一種形狀定義語言。

了解類型與形狀

關(guān)于這一點(diǎn)的一個(gè)簡單示例是以下代碼片段:

第 12 行,我們向函數(shù)描述了參數(shù) req的形狀。

當(dāng)我們運(yùn)行這段代碼時(shí),我們可以看到它的行為完全符合預(yù)期:

從第 12 行的函數(shù)定義可以看出,Type 并不是一個(gè)類型系統(tǒng),它實(shí)際上是一個(gè)形狀定義系統(tǒng)(或者更正式地說,是一個(gè)結(jié)構(gòu)類型系統(tǒng))。

如果我們看一下 Java:

很明顯,這樣做是可行的。你可以看到,在輸出的 Java 中,Type 消失了。這是因?yàn)?Type 的唯一目的是告知編譯器和開發(fā)時(shí)語言服務(wù)器有關(guān)有效形狀的信息。事實(shí)上,Node 和瀏覽器都不運(yùn)行 Type;他們只解析 Java。

Type 仍然是“鴨子類型”

當(dāng)看到一只鳥走起來像鴨子、游泳起來像鴨子、叫起來也像鴨子,那么這只鳥就可以被稱為鴨子。

上面代碼片段的一個(gè)變體可能有助于進(jìn)一步強(qiáng)調(diào)這一點(diǎn):

請注意第 12 行的微妙變化:我們將函數(shù)描述為需要一個(gè)形狀類似于 Req類型的參數(shù) req,但該函數(shù)會(huì)很樂意接受接口 Req2的對象,因?yàn)?Type 不是類型系統(tǒng)。在 C# 等靜態(tài)類型語言中,盡管形狀匹配,但類型元數(shù)據(jù)不匹配,所以這將失敗(我們?nèi)匀豢梢栽?C# 和 Java 等靜態(tài)類型語言中通過定義接口或抽象基類等類型契約來實(shí)現(xiàn)此目的) 。

考慮到這一點(diǎn),許多其他實(shí)用類型和奇怪的“類型體操”就有意義了:它們都是描述形狀的簡單方式——通常是在其他現(xiàn)有形狀的背景下。

Type 實(shí)用函數(shù)

為了進(jìn)一步強(qiáng)調(diào)這一點(diǎn),請考慮以下使用實(shí)用程序類型 Omit<> 的示例:

或者,使用實(shí)用程序類型 Pick<> 進(jìn)行逆操作:

每一種都只是描述有效形狀的不同方式。

Type 泛型

即使我們添加泛型類型約束(第 13 行),原理依舊是一樣的:

交叉類型

即使這個(gè)使用交集類型的構(gòu)造也可以:

結(jié)語

如果你是一名正在使用 Type 的開發(fā)人員,那么你要做的第一件事可能就是忽略名稱中的 “Type” 部分,或許將其視為 “ShapeDef” ;你在開發(fā)時(shí)向語言服務(wù)器、編譯時(shí)向編譯器描述有效的形狀,以及為了您的開發(fā)團(tuán)隊(duì)同事的理智。Type 不是靜態(tài)類型編程語言,而是具有形狀定義的 Java。

第二件事是拿起 Adam Freeman 的 Essential Type 書。這無疑是我擁有的最好的技術(shù)書籍之一,對于任何想要做好 Type 的開發(fā)人員來說都是一本很棒的書。

我希望從這些簡短的示例中可以清楚地看出,將 Type 視為一種編程語言或靜態(tài)類型系統(tǒng),最終會(huì)給理解如何使用這種形狀定義系統(tǒng)編寫更安全的 Java 造成心理障礙。

分享到:
標(biāo)簽:TypeScript
用戶無頭像

網(wǎng)友整理

注冊時(shí)間:

網(wǎng)站:5 個(gè)   小程序:0 個(gè)  文章:12 篇

  • 51998

    網(wǎng)站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會(huì)員

趕快注冊賬號,推廣您的網(wǎng)站吧!
最新入駐小程序

數(shù)獨(dú)大挑戰(zhàn)2018-06-03

數(shù)獨(dú)一種數(shù)學(xué)游戲,玩家需要根據(jù)9

答題星2018-06-03

您可以通過答題星輕松地創(chuàng)建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學(xué)四六

運(yùn)動(dòng)步數(shù)有氧達(dá)人2018-06-03

記錄運(yùn)動(dòng)步數(shù),積累氧氣值。還可偷

每日養(yǎng)生app2018-06-03

每日養(yǎng)生,天天健康

體育訓(xùn)練成績評定2018-06-03

通用課目體育訓(xùn)練成績評定