精品欧美一区二区三区在线观看 _久久久久国色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技術棧公眾號

日韩欧美国产一区在线观看| 免费在线看成人av| 在线观看欧美黄色| 国产精品日韩欧美一区二区| 天天操天天干天天操天天干| av中文字幕在线观看第一页| 久久99国内精品| 亚洲一级黄色av| 丁香六月激情婷婷| 精品久久无码中文字幕| 成人一区不卡| 91黄视频在线观看| 麻豆av一区| 国产一级特黄aaa大片| 亚洲人体在线| 国产精品免费免费| 日韩av观看网址| 亚洲图片综合网| ririsao久久精品一区| 国产在线日韩欧美| 日韩中文字幕在线视频播放| 五月天婷婷激情视频| 同心难改在线观看| 国产亚洲综合精品| 亚洲精品成人久久电影| 无码人妻少妇伦在线电影| 99久久精品免费看国产交换| 亚洲一区二区三区无吗| 欧美一卡在线观看| 成年丰满熟妇午夜免费视频| 国产suv一区二区| 综合一区在线| 91精品在线免费| 韩国黄色一级大片| aa视频在线免费观看| 亚洲一区欧美| 精品粉嫩aⅴ一区二区三区四区| 日韩精品一区二区在线视频| 精品欧美一区二区精品少妇| 欧美国产高潮xxxx1819| 日韩欧美一区二区久久婷婷| 欧美黄网在线观看| 免费观看国产视频| 亚洲伦理精品| 亚洲欧洲国产伦综合| 亚洲国产精品毛片av不卡在线| 撸视在线观看免费视频| 日韩福利视频导航| 精品国偷自产在线视频| 国产精品熟女一区二区不卡| 久久99亚洲网美利坚合众国| 91在线免费播放| 国产成人一区三区| 亚洲人与黑人屁股眼交| 亚洲成人五区| 欧美日韩国产麻豆| 性欧美大战久久久久久久免费观看| 在线播放亚洲精品| 欧美日韩免费| 亚洲欧美一区二区激情| www.超碰97.com| 超碰在线资源| 欧美国产日韩一二三区| 亚洲free性xxxx护士hd| 欧美精品二区三区| 97色伦图片97综合影院| 精品粉嫩超白一线天av| 日本a√在线观看| 色综合999| 久久精品欧美一区二区三区不卡| 91亚洲精品一区| 中文字幕视频网| 日韩一区二区在线| 亚洲第一男人天堂| 中文字幕精品一区二区三区在线| xxxx视频在线| 国产精品欧美久久久久无广告 | 免费国产在线精品一区二区三区| 中文在线字幕av| 极品日韩av| 在线看欧美日韩| 强迫凌虐淫辱の牝奴在线观看| 成人国产在线| 粉嫩av一区二区三区免费野| 尤物一区二区三区| 秋霞av在线| 国产成人精品免费视频网站| 国产精品欧美在线| 影音先锋亚洲天堂| 中文字幕一区二区三三| 中文字幕精品在线视频| 女~淫辱の触手3d动漫| 51亚洲精品| 欧美福利视频一区| 日韩在线视频在线观看| 99久久精品免费观看国产| 欧美激情一区二区在线| 久久精品国产美女| 日本高清视频免费观看| 国产精品18久久久久久久久 | 日本a级片在线观看| 韩日视频在线| 91麻豆精东视频| 国产成人精品免费视频大全最热| 亚洲一区中文字幕在线| 爽爽淫人综合网网站| 久久人人爽人人爽人人片av高清| 777777国产7777777| 欧美特黄一级大片| 亚洲欧美制服丝袜| 女~淫辱の触手3d动漫| 丝袜久久网站| 日韩的一区二区| 午夜不卡久久精品无码免费| 欧州一区二区三区| 欧美一级搡bbbb搡bbbb| 国产欧美精品一二三| 欧美黄色网络| 777奇米成人网| 热久久久久久久久| 成人在线视频国产| 欧美一区二区大片| 少妇熟女视频一区二区三区 | xxx在线免费观看| 亚洲国产精品久久一线不卡| 国产日韩亚洲欧美在线| 激情影院在线| 亚洲va中文字幕| 久激情内射婷内射蜜桃| 国产美女精品写真福利视频| 午夜精品福利视频网站| 中国丰满人妻videoshd| 日韩电影av| 欧美视频一区在线观看| 天天爽夜夜爽一区二区三区| 久久不卡日韩美女| 欧美精品丝袜久久久中文字幕| www.com黄色片| 精品国产一区二区三区性色av| 欧美一区二区精品在线| 国产乱淫av片| 亚洲欧美tv| 国产一区二区精品丝袜| 男女全黄做爰文章| 欧美视频亚洲视频| 欧美中文字幕第一页| 中文字幕欧美色图| 国产成人丝袜美腿| 久久综合给合久久狠狠色| av大片在线播放| 亚洲自拍欧美精品| 色综合av综合无码综合网站| 久久精品黄色| 精品国产一区二区在线观看| 少妇真人直播免费视频| 亚洲mv大片欧洲mv大片| 午夜精品久久久久久久99黑人| 天堂网一区二区| 国产毛片精品国产一区二区三区| 高清不卡日本v二区在线| 神马久久精品| 欧美极品aⅴ影院| 国产肉体ⅹxxx137大胆| 久久91导航| 精品久久五月天| 日韩女同一区二区三区| 午夜激情一区| 国产精品9999| 亚洲第一免费视频| 国产午夜精品一区二区三区嫩草| 精品国产三级a∨在线| 精品三级久久| 欧美肥胖老妇做爰| 一级性生活大片| 一区二区三区毛片免费| 国产成人亚洲综合91| 亚洲精品一区二区口爆| 国产精品久久久久桃色tv| 国产免费黄色av| 久久av网站| 伊人伊人伊人久久| 狠狠躁夜夜躁人人爽天天高潮| 麻豆精品新av中文字幕| 激情五月综合色婷婷一区二区| 男人资源在线播放| 色婷婷久久久综合中文字幕| 大尺度在线观看| 亚洲精彩视频| 国产精品免费在线免费 | 亚洲欧美一区二区三区四区| 久久亚洲av午夜福利精品一区| 久久电影网站中文字幕| 欧美专区一二三| а√天堂中文资源在线bt| 91麻豆精品国产91久久久久| 免费污网站在线观看| 亚洲人成久久| 国产福利久久精品| 在线视频中文字幕第一页| 欧美三级中文字幕在线观看| av网站免费在线看| 性娇小13――14欧美| 精品999在线观看| 国内高清免费在线视频| 日韩一区二区免费电影| 青青操在线视频观看| 日本不卡视频在线| 欧美一级二级三级九九九| 黄色激情在线播放| 亚洲福利视频二区| 日本一区二区网站| www.99精品| 鲁一鲁一鲁一鲁一澡| 国产一区丝袜| 国语自产精品视频在线看抢先版图片| www.五月天激情| 洋洋成人永久网站入口| 少妇高潮一69aⅹ| 欧美 日韩 国产 一区| 97超级在线观看免费高清完整版电视剧| 日韩精品成人av| 欧美日韩一二三| 欧美美女性生活视频| 精品制服美女丁香| 992tv成人免费观看| 日韩av综合| 国内精品小视频在线观看| 日韩性xxxx| 欧美性猛交xxxx偷拍洗澡| 欧美激情aaa| 奇米一区二区三区av| 中文字幕久精品免| 日韩一区二区三区精品视频第3页| 久久91亚洲精品中文字幕| 黄色小视频免费观看| 午夜精品久久久久久久久 | 日本一区二区三区dvd视频在线| 天天干在线影院| 99久久亚洲精品蜜臀| 成人av片网址| 亚洲精品国产精品国产| 色琪琪综合男人的天堂aⅴ视频| 91欧美日韩麻豆精品| 一区二区三区四区国产精品| 在线视频 日韩| 奇米精品一区二区三区四区| 在线观看日本一区| 日本wwwxx| 精品素人av| 国产成人精品av| 好吊日视频在线观看| 精品国产露脸精彩对白| 欧产日产国产69| 亚洲色大成网站www久久九九| 久久久久亚洲AV成人网人人小说| 蜜桃av一区| 浴室偷拍美女洗澡456在线| 欧美黑白配在线| 成人免费网站在线看| √最新版天堂资源网在线| 亚洲图片欧美午夜| 国产叼嘿视频在线观看| 欧美日韩另类字幕中文| 激情高潮到大叫狂喷水| 99久久免费精品| 亚洲欧美日本一区二区| 亚洲影音先锋| 91大学生片黄在线观看| 欧美伦理影院| 精品无人区一区二区三区| 午夜精品久久久久久毛片| 97国产成人精品视频| 欧美成人hd| 亚洲女人初尝黑人巨大| wwwxxxx国产| 欧美伊人久久久久久久久影院| 久久久精品91| 一区在线观看免费| 一色道久久88加勒比一| 99免费精品在线观看| 韩国三级丰满少妇高潮| 免费高清成人在线| 2022亚洲天堂| 欧美精品一卡| 一区高清视频| 成人3d精品动漫精品一二三| 久久本道综合色狠狠五月| 色悠久久久久综合先锋影音下载| 国产精品自拍网| 视频精品导航| 国产精品成人aaaaa网站| 9765激情中文在线| 精品中文字幕在线2019| 欧美13一16娇小xxxx| 最近中文字幕2019免费| 国产精品毛片一区二区三区四区| 亚洲大胆人体视频| 性网爆门事件集合av| 91麻豆精品国产91久久久资源速度| 中文在线观看av| 免费日韩av片| 欧美大奶子在线| 91精品国产综合久久久久久豆腐| 亚洲精品一区二区在线| 亚洲精品中文字幕成人片| 日韩一区二区三| 精品国精品国产自在久不卡| 日韩一区二区三区av| 99国产精品久久久久久久成人| 欧美美女网站色| 一二三四区视频| 欧美精品vⅰdeose4hd| 国产精品一级视频| 欧美一区二区观看视频| 国产浮力第一页| 欧美岛国在线观看| 人妻中文字幕一区| 精品视频久久久久久| 日本又骚又刺激的视频在线观看| 日韩精品高清视频| 黄视频在线播放| 视频直播国产精品| 黄色网页在线观看| 欧美国产日韩精品| 国产高潮在线| 国产精品福利在线观看| 免费视频观看成人| 亚洲自拍高清视频网站| 成人在线超碰| 欧美深深色噜噜狠狠yyy| 欧美色蜜桃97| 青青草免费在线视频观看| 欧美日韩免费| 欧美网站免费观看| 日韩av一区二区在线影视| 国产三级三级看三级| 国产一区二区三区视频在线播放| 1314成人网| 91在线免费播放| 日本在线观看网址| 洋洋av久久久久久久一区| 狠狠躁夜夜躁人人爽天天高潮| 欧美丝袜第一区| 91成品人影院| 亚洲成色777777女色窝| 国产精品秘入口| 欧美激情在线观看| 中文字幕av一区二区三区佐山爱| 国产日韩欧美夫妻视频在线观看 | 999在线观看免费大全电视剧| 999久久久久久久久6666| 久久免费视频1| 我不卡影院28| 九一国产精品视频| 久久99久久精品| 国产精品福利导航| 中文字幕中文字幕一区二区| 精品少妇theporn| 精品污污网站免费看| 欧美熟妇乱码在线一区| 色爱av美腿丝袜综合粉嫩av| √8天堂资源地址中文在线| 国产精品入口免费视| 林ゆな中文字幕一区二区| 亚洲欧洲国产日韩精品| 亚洲激情黄色| 在线视频一二区| 久久精品网站免费观看| 欧美丰满艳妇bbwbbw| 在线免费观看日韩欧美| 亚洲欧美另类日韩| 中文字幕亚洲第一| 亚洲十八**毛片| 91麻豆国产精品| 欧美一二区在线观看| 免费观看国产精品视频| 国产毛片精品国产一区二区三区| 日本乱子伦xxxx| 天天色天天操综合| 国产偷人妻精品一区二区在线| 亚洲欧洲免费视频| 国产美女高潮在线| 99久久99久久| 仙踪林久久久久久久999| 麻豆av免费在线| 9人人澡人人爽人人精品| 永久久久久久久| 欧美另类一区二区三区| 国产在线色视频| 青青精品视频播放| 欧美成人基地| 免费不卡av在线| 国产成人啪免费观看软件 | 亚洲自拍偷拍综合| 99久久久国产精品无码免费| 中文日韩在线视频| 欧亚一区二区| 日本免费高清不卡| 久久综合网络一区二区| 久久久久久亚洲中文字幕无码|