精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

TypeScript 5.1 正式發布!你學到了什么?

開發 前端
舊版本的 TypeScript 分析 JSDoc 注釋時,它們會使用掃描器/分詞器將注釋分解為細粒度的標記并將內容拼湊在一起。這可能有助于規范化注釋文本,這樣多個空格就會合并為一個。但這也意味著解析器和掃描器會經常來回跳轉,從而增加 JSDoc 解析的開銷。

6 月 1 日,TypeScript 5.1 正式發布。以下是該版本中新增的主要功能:

  • 改進函數返回值類型 undefined 的類型推斷
  • getter和setter支持設置不同類型
  • JSX 元素和 JSX 標簽類型之間解耦類型檢查
  • 帶命名空間的 JSX 標簽
  • typeRoots在模塊解析中被查詢
  • JSX 標簽支持鏈接光標
  • @Param JSDoc 標簽中支持代碼補全
  • 優化

可以通過以下 npm 命令來安裝最新版本:

npm install -D typescript

改進函數返回值類型 undefined 的類型推斷

在 JavaScript 中,如果函數沒有返回值,就會返回 undefined:

function foo() {
  // 沒有 return
}

// x = undefined
let x = foo();

然而,在以前版本的 TypeScript 中,只有返回值類型為 void 和 any 的函數可以沒有 return語句。這意味著即使明確知道這個函數是返回 undefined 的,也需要至少有一個 return 語句。如下所示:

// ? 推斷 f1 返回 void
function f1() {
  // no returns
}

// ? void 不需要 return 語句
function f2(): void {
  // no returns
}

//  ? any 不需要 return 語句
function f3(): any {
  // no returns
}


// ? 聲明類型既不是 void 也不是 any 的函數必須返回一個值。
function f4(): undefined {
  // no returns
}

有些時候,我們可能希望函數返回 undefined。在以前的版本中,可能需要顯式返回一個 undefined 或者顯式添加一個 return 語句。如下所示:

declare function takesFunction(f: () => undefined): undefined;

// ? 類型“() => void”的參數不能賦給類型“() => undefined”的參數。不能將類型“void”分配給類型“undefined”。
takesFunction(() => {
  // no returns
});

// ? 其聲明類型不為 "void" 或 "any" 的函數必須返回值。
takesFunction((): undefined => {
  // no returns
});

// ? 類型“() => void”的參數不能賦給類型“() => undefined”的參數。不能將類型“void”分配給類型“undefined”。
takesFunction(() => {
  return;
});

// ? 顯式返回 undefined
takesFunction(() => {
  return undefined;
});

// ? 顯式添加 return 語句
takesFunction((): undefined => {
  return;
});

在 TypeScript 5.1 中,允許返回 undefined 的函數沒有 return 語句。如下所示:

// ?
function f4(): undefined {
  // no returns
}

// ?
takesFunction((): undefined => {
  // no returns
});

如果函數沒有 return 并且被傳遞給期望返回 undefined 的函數參數,TypeScript 會推斷該函數的返回類型為 undefined。

// ?
takesFunction(function f() {
  //                   ^ 返回值類型為 undefined

  // no returns
});

// ?
takesFunction(function f() {
  //                   ^ 返回值類型為 undefined

  return;
});

為了解決另一個類似的痛點,在 TypeScript 的 --noImplicitReturns 選項下,僅返回 undefined 的函數現在具有與 void 類似的異常,因為并非每個代碼路徑都必須以顯式 return 結束。

// ? 啟用 '--noImplicitReturns'
function f(): undefined {
  if (Math.random()) {
    // ...
    return;
  }
}

getter和setter支持設置不同類型

TypeScript 4.3 使得 get 和 set 訪問器對可以指定兩種不同的類型成為可能。

interface Serializer {
  set value(v: string | number | boolean);
  get value(): string;
}

declare let box: Serializer;

// 允許賦值為 'boolean'
box.value = true;

// 類型為 'string'
console.log(box.value.toUpperCase());

最初要求 get 類型必須是 set 類型的子類型。以下寫法是有效的:

box.value = box.value;

但是,有許多現有的和提議的 API 在它們的 getter 和 setter 之間具有完全不相關的類型。例如,考慮一個最常見的例子——DOM 和 CSSStyleRule API 中的 style 屬性。每個樣式規則都有一個 style 屬性,即 CSSStyleDeclaration;但是,如果嘗試寫入該屬性,它只能使用字符串才有效。

TypeScript 5.1 現在允許 get 和 set 訪問器屬性設置不同的類型,前提是它們具有顯式類型注釋。雖然此版本的 TypeScript 尚未更改這些內置接口的類型,但現在可以通過以下方式定義 CSSStyleRule:

interface CSSStyleRule {
    get style(): CSSStyleDeclaration;
    set style(newValue: string);
}

也允許以下方式使用:

class SafeBox {
    #value: string | undefined;

    // 只接受字符串
    set value(newValue: string) {

    }

    // 必須檢查 undefined
    get value(): string | undefined {
        return this.#value;
    }
}

這就類似于在 --exactOptionalProperties 下檢查可選屬性的方式。

JSX 元素和 JSX 標簽類型之間解耦類型檢查

TypeScript 對 JSX 的一個痛點是它對每個 JSX 元素標簽類型的要求。此版本的 TypeScript 使 JSX 庫可以更準確地描述 JSX 組件可以返回的內容,這具體意味著可以在 React 中使用異步服務端組件。

例如,有以下 JSX 元素:

//  自閉合的 JSX 標簽
<Foo />

// 帶有開始/結束標簽的常規元素
<Bar></Bar>

當對 <Foo /> 或 <Bar></Bar> 進行類型檢查時,TypeScript 總是會查找名為 JSX 的命名空間,并從中獲取一個名為 Element 的類型,也就是在查找 JSX.Element。

但是為了檢查 Foo 或 Bar 本身是否是有效的標簽名稱,TypeScript 會粗略地獲取由 Foo 或 Bar 返回或構造的類型,并檢查與 JSX.Element 的兼容性(或者如果類型是可構造的,則檢查另一種稱為 JSX.ElementClass 的類型)。

這個限制意味著如果組件返回比 JSX.Element 更廣泛的類型,則無法使用組件。例如,JSX 庫可能可以接受一個返回字符串或Promise的組件。舉一個具體的例子,React 的未來版本提議對返回 Promise 的組件提供有限支持,但是現有版本的TypeScript 無法表達這種類型,除非徹底放寬 JSX.Element 的類型限制。

import * as React from "react";

async function Foo() {
    return <div></div>;
}

let element = <Foo />;
//             ~~~
// “Foo”不能用作 JSX 組件。其返回類型 "Promise<Element>" 不是有效的 JSX 元素。

為了向庫提供一種表達方式,TypeScript 5.1 現在會查找名為 JSX.ElementType 的類型。ElementType 精確指定什么可以有效用作 JSX 元素中的標簽。因此,現在它的類型可能會被定義為類似于以下這樣:

namespace JSX {
    export type ElementType =
        // 所有有效的小寫標簽
        keyof IntrinsicAttributes
        // 函數組件
        (props: any) => Element
        // 類組件
        new (props: any) => ElementClass;

    export interface IntrinsictAttributes extends /*...*/ {}
    export type Element = /*...*/;
    export type ClassElement = /*...*/;
}

帶命名空間的 JSX 標簽

TypeScript 現在支持在使用 JSX 時使用帶命名空間的屬性名。

import * as React from "react";

// 這兩個是等價的:
const x = <Foo a:b="hello" />;
const y = <Foo a : b="hello" />;

interface FooProps {
    "a:b": string;
}

function Foo(props: FooProps) {
    return <div>{props["a:b"]}</div>;
}

當名稱的第一部分是小寫字母時,在 JSX.IntrinsicAttributes 上以類似的方式查找命名空間標簽名稱。

// 在某些庫的代碼中或在該庫的擴展中:
namespace JSX {
    interface IntrinsicElements {
        ["a:b"]: { prop: string };
    }
}

// 在我們的代碼中:
let x = <a:b prop="hello!" />;

typeRoots 在模塊解析中被查詢

當 TypeScript 指定的模塊查找策略無法解析路徑時,它現在將解析相對于指定 typeRoots 的包。

JSX 標簽支持鏈接光標

TypeScript 現在支持 JSX 標簽名稱的鏈接編輯。也就是在編輯開始/結束標簽時,會自動修改結束/開始標簽。

圖片

這項新功能應該適用于 TypeScript 和 JavaScript 文件,并且可以在 Visual Studio Code Insiders 中啟用。在 Visual Studio Code 中,勾選 Editor: Linked Editing 選項即可:

圖片

或者在 JSON 設置文件中配置 editor.linkedEditing:

{
  // ...
  "editor.linkedEditing": true,
}

Visual Studio 17.7 Preview 1 也將支持此功能。

@Param JSDoc 標簽中支持代碼補全

在 TypeScript 和 JavaScript 文件中輸入 @param 標簽時,TypeScript 現在提供代碼補全。

圖片

優化

避免不必要的類型實例化

TypeScript 5.1 現在避免在已知不包含對外部類型參數的引用的對象類型中執行類型實例化。這有可能減少許多不必要的計算,并將 material-ui 的文檔目錄的類型檢查時間減少 50% 以上。

聯合字面量類型檢查優化

在檢查源類型是否屬于聯合類型時,TypeScript首先將使用該源類型的內部類型標識符進行快速查找。如果查找失敗,則TypeScript會針對聯合類型中的每種類型檢查其兼容性。當將字面類型與僅包含字面類型的聯合類型相關聯時,TypeScript現在可以避免針對聯合類型中的每種其他類型進行完整遍歷。

這種優化可以將此問題中的代碼的類型檢查時間從約 45 秒減少到約 0.4 秒。

進行JSDoc解析時減少對掃描器的調用

當舊版本的 TypeScript 分析 JSDoc 注釋時,它們會使用掃描器/分詞器將注釋分解為細粒度的標記并將內容拼湊在一起。這可能有助于規范化注釋文本,這樣多個空格就會合并為一個。但這也意味著解析器和掃描器會經常來回跳轉,從而增加 JSDoc 解析的開銷。

TypeScript 5.1 在將 JSDoc 注釋分解為掃描器/分詞器方面更改了邏輯。掃描器現在將更大的內容塊直接返回給解析器,以便根據需要進行處理。

這些更改已將幾個 10Mb 的主要是注釋的 JavaScript 文件的解析時間縮短了大約一半。

參考:https://devblogs.microsoft.com/typescript/announcing-typescript-5-1/

責任編輯:武曉燕 來源: 前端充電寶
相關推薦

2023-10-16 08:55:43

Redisson分布式

2023-04-10 07:40:36

GraphQLRest通信模式

2022-07-19 08:04:04

HTTP應用層協議

2024-11-13 09:22:40

2024-04-12 08:54:13

從庫數據庫應用

2024-10-18 11:48:00

2024-07-31 09:28:56

2024-08-12 15:44:06

2025-02-28 00:03:00

2023-03-17 07:05:41

TypeScriptJSDoc 功能

2023-06-06 08:14:18

核心Docker應用程序

2023-04-26 22:52:19

視覺人臉檢測人臉對齊

2021-03-09 09:55:02

Vuejs前端代碼

2021-09-03 06:46:34

MyBatis緩存后端

2023-04-26 01:25:05

案例故障模型

2022-09-21 13:44:59

TypeScript微軟

2021-12-26 18:30:56

嵌入式ARM鏈接

2023-06-30 07:30:38

2023-06-24 23:11:07

2023-10-28 09:41:12

Next.js函數配置選項
點贊
收藏

51CTO技術棧公眾號

亚洲免费精品| 玖玖精品一区| 国产精品无人区| 91在线直播亚洲| 精品一区二区三区人妻| 奇米色欧美一区二区三区| 欧美日韩国产系列| 久久男人资源站| 国产精品麻豆一区二区三区| 国产乱子轮精品视频| 国产91精品久| 中文字幕电影av| 亚洲人成网亚洲欧洲无码| 69堂成人精品免费视频| 久久亚洲中文字幕无码| 日韩大片在线永久免费观看网站| 成人涩涩免费视频| 国产精品在线看| 国产成人亚洲精品自产在线 | 久久精品导航| 欧美成人一二三| 性欧美一区二区| 国产96在线亚洲| 欧美精品1区2区| 黄色国产精品视频| 久久亚洲资源| 自拍偷在线精品自拍偷无码专区 | 日韩一区电影| 日韩电影第一页| 超碰91在线播放| 成人在线高清| 日韩欧美一区二区三区| 拔插拔插海外华人免费| 国产激情在线| 中文字幕亚洲电影| 亚洲春色在线| 国产永久av在线| 2023国产精品| 精品一区二区久久久久久久网站| 91丨九色丨蝌蚪丨对白| 日本免费在线视频不卡一不卡二| 51精品在线观看| 黄色一级片中国| 一区二区三区四区日韩| 日韩有码片在线观看| av中文字幕免费观看| 日韩欧美影院| 精品无人国产偷自产在线| 色哟哟无码精品一区二区三区| 国产精品久久久久久久久久辛辛 | 中文字幕亚洲欧洲| 久久久人成影片一区二区三区在哪下载 | 国产视频911| 精品免费二区三区三区高中清不卡| av网站在线观看免费| 久久爱www久久做| 国产精品视频免费在线| 国产情侣小视频| 日本va欧美va欧美va精品| 国产成人精品日本亚洲专区61| 国产性猛交╳xxx乱大交| 99精品国产在热久久| 91精品国产91久久| 在线观看免费国产视频| 亚洲综合国产| 国产不卡精品视男人的天堂| 无码人妻精品一区二| 日韩高清一区二区| 国产精品欧美一区二区三区奶水 | 亚洲福利视频二区| 中文字幕一区三区久久女搜查官| 老司机成人在线| 亚洲精品一区二区三区不| 国产成人无码精品久久二区三| 国产一区二区三区天码| 日韩在线精品一区| 人妻久久一区二区| 亚洲欧洲一区| 日韩美女视频在线观看| 亚洲天堂视频网| 国产成人午夜精品5599| 久久久福利视频| 国产综合在线观看| 亚洲婷婷综合色高清在线| 国产成人生活片| 日韩理论视频| 欧美色窝79yyyycom| 亚洲高清av一区二区三区| 粉嫩的18在线观看极品精品| 亚洲欧美精品在线| 国产一区二区精彩视频| 国产亚洲在线| 国产日韩av在线播放| 国精产品一品二品国精品69xx| 久久日一线二线三线suv| 天堂资源在线亚洲资源| 日本在线视频网址| 在线免费观看日本一区| 日本一区二区三区在线免费观看| 日韩高清影视在线观看| 日韩中文字幕免费视频| 日本三级网站在线观看| 美女视频网站黄色亚洲| 国产日韩欧美一区二区| 男人的天堂在线视频免费观看 | 亚洲精品日韩一| www.中文字幕在线| 日韩成人在线一区| 亚洲国产精品人人爽夜夜爽| 国产在视频线精品视频| 日韩天堂av| 成人av.网址在线网站| 亚洲色图另类小说| 亚洲精品国产品国语在线app| av免费在线播放网站| 日韩区欧美区| 日韩中文字幕免费| 9i精品福利一区二区三区| 国产福利电影一区二区三区| 亚洲成色最大综合在线| 涩涩涩视频在线观看| 91精品国产一区二区三区蜜臀 | 97人人精品| 欧美中文字幕第一页| 丰满少妇在线观看bd| 亚洲特黄一级片| 丁香婷婷激情网| 香蕉久久夜色精品国产使用方法| 欧美日韩成人在线观看| 中文在线资源天堂| 久久久久久影视| 亚洲国产精品久久久久婷蜜芽| 国产一区二区在线观| 色偷偷av一区二区三区| 久久影视中文字幕| 久久综合丝袜日本网| www.av片| 婷婷视频一区二区三区| 美日韩在线视频| 国产免费黄色大片| 亚洲人妖av一区二区| 日韩精品视频一二三| 神马久久一区二区三区| 国产91精品最新在线播放| 香蕉视频黄色片| 五月天欧美精品| 亚洲视频在线播放免费| 99精品国产福利在线观看免费 | 亚洲国产乱码最新视频| 97人人模人人爽人人澡| 亚洲精品a级片| 91丨九色丨国产| 亚洲欧美成人影院| 欧美刺激午夜性久久久久久久| 欧美成人精品欧美一级| 国产成人av电影| 妞干网视频在线观看| aiss精品大尺度系列| 久久人人爽人人爽人人片av高清| 丰满人妻一区二区三区免费| 婷婷国产在线综合| 欧美做受高潮6| 日本伊人色综合网| 亚洲一区三区视频在线观看| 日韩深夜福利网站| 久久久成人av| 成人午夜视频一区二区播放| 亚洲h在线观看| 日本免费福利视频| 久久只有精品| 一区二区在线观| 久久av偷拍| 欧美激情在线播放| 日韩av免费观影| 欧美日韩国产经典色站一区二区三区 | 哺乳一区二区三区中文视频| 97婷婷涩涩精品一区| 国产系列在线观看| 在线播放一区二区三区| 久久久久亚洲AV| 国产午夜精品福利| 97超碰人人看| 久久久久中文| 国产成人精品免费看在线播放| 亚洲开心激情| 日韩免费观看网站| 黄网站免费在线观看| 精品成人佐山爱一区二区| 亚洲va在线观看| 亚洲欧洲国产日本综合| 亚洲av无码专区在线播放中文| 欧美综合二区| 日本黄网站色大片免费观看| 亚洲精品动态| 亚洲aa在线观看| 中文在线免费二区三区| 日韩中文字幕视频在线| 东京干手机福利视频| 欧美伊人久久久久久午夜久久久久| 欧美日韩亚洲国产另类| 久久久99精品免费观看| 色欲无码人妻久久精品| 视频在线在亚洲| 欧美黄网在线观看| 欧美色蜜桃97| 精品国产一区二区三区麻豆小说 | 日本 国产 欧美色综合| 国产一级大片免费看| 精品一区不卡| 久久精品日韩精品| 永久免费精品视频| 国产精品视频久久| 在线最新版中文在线| 欧美成人自拍视频| av影片免费在线观看| 亚洲激情视频在线| www.99视频| 欧美精品一卡二卡| 中文字幕 亚洲视频| 欧美日韩国产丝袜另类| 日韩在线观看视频一区二区| 国产三级精品视频| xxxx黄色片| 粉嫩嫩av羞羞动漫久久久| 国产探花在线看| 丝袜亚洲另类欧美综合| 黄色一级在线视频| 午夜视频一区| 香蕉视频免费版| 日韩三级在线| 亚洲蜜桃av| jizzjizz欧美69巨大| 欧美裸体网站| 五月综合久久| 九九久久99| 日本一区福利在线| 国产日本一区二区三区| 91精品入口| 国产超碰91| 99久久人爽人人添人人澡| 91一区二区三区| 精品中文字幕一区二区三区| 亚洲自拍在线观看| 成人影院网站ww555久久精品| 国产精品自在线| 四虎影视成人精品国库在线观看| 国产精品视频成人| 日本成人一区二区| 成人欧美一区二区三区黑人| 亚洲精品aaa| 91久久久精品| 日韩精品免费视频一区二区三区| 亚洲自拍av在线| 日韩欧美中文在线观看| 国产福利久久精品| 欧美激情影院| 欧美午夜欧美| 欧美亚洲高清| 只有这里有精品| 欧美精品18| 欧美成人三级在线视频| 国产日韩一区| 黄色片在线免费| 国产真实精品久久二三区| 超碰在线超碰在线| 成人一道本在线| 人妻在线日韩免费视频| 久久精品在线免费观看| 快灬快灬一下爽蜜桃在线观看| 国产精品久久毛片av大全日韩| 污污的视频在线免费观看| 一区二区三区欧美视频| 日韩三级一区二区三区| 欧洲生活片亚洲生活在线观看| 一级片视频播放| 日韩亚洲欧美中文三级| 天堂成人在线| 最好看的2019的中文字幕视频| 国产丝袜在线| 97成人超碰免| 日韩欧美三区| 久久久久久国产精品mv| 全球成人免费直播| 日韩亚洲欧美一区二区| 亚洲综合另类| 中文字幕成人免费视频| 成人性生交大片免费| 欧美做受xxxxxⅹ性视频| 综合久久给合久久狠狠狠97色| 国产无码精品视频| 欧洲视频一区二区| 成人毛片在线免费观看| 国产亚洲精品久久久久动| 影音先锋中文在线视频| 国产福利精品av综合导导航| 日韩在线观看一区二区三区| 日本一区二区三区四区在线观看| 牛牛国产精品| 欧美婷婷精品激情| 成人动漫中文字幕| 四虎地址8848| 精品欧美国产一区二区三区| 国产女人高潮时对白| 亚洲精品一区二三区不卡| 2024最新电影免费在线观看| 国产精品久久久久av免费| 成人性生交大片免费看中文视频| 亚洲春色在线| 美女精品一区| 艳妇乳肉豪妇荡乳xxx| 中文字幕日本乱码精品影院| 久久精品视频1| 亚洲成人中文字幕| 国产乱色在线观看| 国产精品久久久久久久久久尿 | 激情综合色播激情啊| 全黄一级裸体片| 亚洲一区二区三区视频在线播放| 一级黄色a毛片| 亚洲欧洲av一区二区| 久草在线中文最新视频| 91九色偷拍| 亚洲成人国产| 一道本在线免费视频| 久久九九久久九九| 一本一道无码中文字幕精品热| 欧美xxx久久| av在线下载| 成人h猎奇视频网站| 精品久久网站| 午夜精品久久久内射近拍高清| 99综合电影在线视频| 国产精品成人av久久| 日韩免费高清av| 色呦呦视频在线观看| 亚洲在线视频观看| 亚洲精品国产首次亮相| 五月天开心婷婷| 国产精品高潮呻吟| 在线观看一二三区| 神马久久久久久| 免费一级欧美在线观看视频| 色噜噜狠狠色综合网| 日韩激情视频网站| 免费看91的网站| 欧美三区免费完整视频在线观看| 9色在线视频网站| 成人av在线亚洲| 欧美一区不卡| 国产精品日日摸夜夜爽| 亚洲一区二区偷拍精品| 日本xxxxwww| 欧美一级视频一区二区| 蜜乳av综合| 午夜国产一区二区三区| 国产精品久久久久久久久果冻传媒 | a毛片在线看免费观看| αv一区二区三区| 亚洲国产精品一区制服丝袜| 在线精品一区二区三区| 日韩欧美一区二区在线| 在线免费观看黄| 亚洲va电影大全| 在线 亚洲欧美在线综合一区| 你懂的在线观看网站| 欧美性猛交xxxx乱大交3| 国产最新视频在线观看| 成人字幕网zmw| 在线免费观看欧美| 醉酒壮男gay强迫野外xx| 欧美一a一片一级一片| 里番在线观看网站| 99九九视频| 午夜在线一区| 成人信息集中地| 精品国产不卡一区二区三区| 竹内纱里奈兽皇系列在线观看| 天天综合色天天综合色hd| 国产精品羞羞答答xxdd| 天天干在线播放| 久久久国产在线视频| 嫩草国产精品入口| av污在线观看| 亚洲高清不卡在线观看| 国产永久免费高清在线观看视频| 91在线观看免费观看 | 国产99久久| 色黄视频免费看| 欧美性猛交xxx| 国产区在线观看| 欧美一区1区三区3区公司| 国内外成人在线| 久久国产黄色片| 欧美噜噜久久久xxx| 九一国产精品| 亚洲欧洲日韩综合| 欧美性感一类影片在线播放| 好久没做在线观看| 午夜精品区一区二区三| 99久久精品国产观看|