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

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

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

【CSDN 編者按】本文所提到的這些功能,你最希望哪個(gè)能實(shí)現(xiàn)。

原文鏈接:https://www.totaltype.com/type-5-3

作者 | Matt Pocock 翻譯 | ChatGPT

責(zé)編 | 夢(mèng)依丹

出品 | CSDN(ID:CSDNnews)

8月24日,Type 高級(jí)項(xiàng)目經(jīng)理 Daniel Rosenwasser 在官博發(fā)布 Type 5.2 版本,該版本進(jìn)行了多項(xiàng)功能更新,添加了對(duì) ECMA 中即將推出的顯式資源管理功能支持、推出了裝飾器元數(shù)據(jù)(Decorator Metadata),可以讓裝飾器輕松地在其使用的任何類(lèi)上創(chuàng)建和使用元數(shù)據(jù)、命名和匿名元組元素,Tuple 類(lèi)型支持為每個(gè)元素提供可選的標(biāo)簽或名稱(chēng)等。

與此同時(shí),官方團(tuán)隊(duì)還宣布了 Type 5.3 迭代計(jì)劃,該計(jì)劃是用來(lái)規(guī)劃5.3 版本可能包含的功能,本文作者總結(jié)了一些開(kāi)發(fā)者最感興趣的功能。一起看下。

導(dǎo)入屬性(Import Attributes)

Type 5.3 很可能會(huì)新增導(dǎo)入屬性,該功能已經(jīng)達(dá)到 Stage 3 的 TC39 提案。該功能允許開(kāi)發(fā)者導(dǎo)入指定選項(xiàng),例如,你可以指定 JSON 導(dǎo)入類(lèi)型:

importjson from'./foo.json'with{ type: 'json'};

它還支持你指定動(dòng)態(tài)導(dǎo)入的類(lèi)型:

import("foo.json", { with: { type: "json"} });

還可以使用經(jīng)過(guò)驗(yàn)證的類(lèi)型重新導(dǎo)出一個(gè)模塊:


export{ val } from'./foo.js'with{ type: "JAVA"};

或者使用經(jīng)過(guò)驗(yàn)證的類(lèi)型實(shí)例化 worker:

newWorker("foo.wasm", { type: "module", with: { type: "webassembly"}, });

添加該功能的主要目的是處于安全性考慮,防止響應(yīng)服務(wù)器意外提供不同的 MIME 類(lèi)型,從而導(dǎo)致代碼意外執(zhí)行的情況。

支持 throw 異常

throw 表達(dá)式是 Java 里的一種語(yǔ)法,這是一種在不使用語(yǔ)句的情況下拋出異常的一種方式,可以寫(xiě)成:


constid = searchParams.id || thrownewError("id is required");

這種方式在 Java 中并不可用,在 Type 中會(huì)拋出一個(gè)錯(cuò)誤:


constid = searchParams.id || thrownewError("id is required");

Expression expected.

然而,throw 表達(dá)式在 Type 5.3 中不太可能實(shí)現(xiàn)。該提案仍處于第2階段,離添加到 Type 所需的第3階段還有一段距離。

但 Type 迭代計(jì)劃特別增加了對(duì)這個(gè)提案的“支持”。這意味著他們正在積極地開(kāi)展工作,因此它有可能在未來(lái)的 Java/Type 版本中實(shí)現(xiàn)。

隔離聲明(Isolated Declarations)

在一個(gè)包含許多軟件包的單一代碼庫(kù)中,你可能會(huì)遇到相互依賴(lài)的情況。這種情況下,你可能會(huì)得到一個(gè)非常深層次、類(lèi)似于“家族樹(shù)”的結(jié)構(gòu),其中軟件包 A 依賴(lài)于軟件包 B,而軟件包 B 又依賴(lài)于軟件包 C,以此類(lèi)推。

在這種情況下,Type 的檢查可能會(huì)變得非常緩慢。首先必須檢查 D 包,然后是 C 包、B包,最后才是A包。

造成這種情況的原因是 Type 本身需要打印每個(gè)包的聲明文件(.d.ts文件),這也意味著對(duì)它們進(jìn)行類(lèi)型檢查,該過(guò)程很慢。

一種提速方法是讓更快的工具,如 esbuild 或 swc 為每個(gè)包創(chuàng)建聲明文件。但目前這是不可能的。Type 對(duì)于需要添加多少注釋到代碼中并沒(méi)有嚴(yán)格要求。第三方工具無(wú)法根據(jù)推斷生成聲明文件。

引入隔離聲明 - 這是 Type 的一種新、更嚴(yán)格的模式,可以解決這個(gè)問(wèn)題。

可以在 tsconfig.json 添加一個(gè)選項(xiàng):

{ "compilerOptions": { "isolatedDeclarations": true } }

一旦啟用,它便會(huì)要求開(kāi)發(fā)者人員嚴(yán)格添加注釋?zhuān)唧w如何要求仍在討論中,并可能隨時(shí)間的變化而改變。作為一個(gè) Demo,導(dǎo)出函數(shù)的返回類(lèi)型注釋很可能是強(qiáng)制性的,以避免 Type 需要推斷它們。

開(kāi)發(fā)者只需要在共享包上啟用 isolatedDeclarations - 你不需要在應(yīng)用程序代碼上啟用它。限制共享包的做法可能是可取的,因?yàn)橥ǔG闆r下,開(kāi)發(fā)者會(huì)希望對(duì)共享包添加更多的注釋。

泛型函數(shù)縮小范圍

在處理通用函數(shù)時(shí),我給出的一個(gè)建議是“不要害怕使用 as”。目前的 Type 在通用函數(shù)內(nèi)部的縮小類(lèi)型方面表現(xiàn)并不理想。

例如:

上述代碼正在嘗試根據(jù) key 從對(duì)象中返回一個(gè)值。如果傳入'foo',將返回一個(gè)字符串。如果傳入'bar',則是返回一個(gè)數(shù)字。

代碼看起來(lái)沒(méi)問(wèn)題,可殊不知 Type 卻報(bào)錯(cuò)了。

原因則是 Type 沒(méi)有將 Example[T] 縮小為正確的 key,一旦對(duì) Example[T] 進(jìn)行縮小操作,就會(huì)導(dǎo)致它被類(lèi)型化為 never,因此報(bào)錯(cuò)。

目前唯一能讓該段程序正常運(yùn)行的方法是將其輸入為“never”。

functionexampleFunc<TextendskeyofExample>( key: T ): Example[T] { if(key === "foo") { return"abc"asnever; } else{ return123asnever; } }

感覺(jué)真的很糟。

Type 5.3 可能會(huì)在這里進(jìn)行一些更改。有個(gè) long-open issue 提到了做此更改的動(dòng)機(jī)。

此項(xiàng)更對(duì)我來(lái)說(shuō)是非常高興的事情。這里的泛型錯(cuò)誤推斷于開(kāi)發(fā)者而言,并不容易,如果 Type 在此類(lèi)錯(cuò)誤下變的更聰明一些,那開(kāi)發(fā)者用起泛型會(huì)更加容易。

字符串自動(dòng)補(bǔ)全

Type 里面有個(gè)著名的字符串補(bǔ)全技巧,就是使用 string&{}來(lái)實(shí)現(xiàn)自動(dòng)寬松補(bǔ)全:

typeIconSize = | "small" | "medium" | "large" | (string& {});

該注釋看起來(lái)很奇怪,但它存在的原因是為了讓你在傳遞任何值給 IconSize 的同時(shí),還能獲得其他三個(gè)值的自動(dòng)補(bǔ)全。

consticons: IconSize[] = [ "small", "medium", "large", "extra-large", "anything-goes", ];

Type 5.3 可能會(huì)推出一個(gè)新功能,使得這個(gè) hack 變得不再必要。開(kāi)發(fā)者將能夠使用字符串作為類(lèi)型,并獲得相同的自動(dòng)補(bǔ)全功能。

typeIconSize = | "small" | "medium" | "large" | string;

這將非常受歡迎 - 尤其是因?yàn)?Webstorm 用戶(hù)已經(jīng)擁有了多年。

fetch in @types/node

在 2022 年 2 月 1 日,Node.js 團(tuán)隊(duì)合并了一個(gè)拉取請(qǐng)求,將 Fetch API 添加到 Node.js 中。這意味著 Node.js 將擁有一個(gè)像瀏覽器一樣的 fetch 函數(shù)。但該功能尚未被添加到 @types/node 中,目前該問(wèn)題在 DefinitelyTyped 板塊下引發(fā)了激烈討論。

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

網(wǎng)友整理

注冊(cè)時(shí)間:

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

  • 51998

    網(wǎng)站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會(huì)員

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

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

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

答題星2018-06-03

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

全階人生考試2018-06-03

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

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

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

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

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

體育訓(xùn)練成績(jī)?cè)u(píng)定2018-06-03

通用課目體育訓(xùn)練成績(jī)?cè)u(píng)定