国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Typescript 5.0 發(fā)布:快速概覽

這篇具有很好參考價(jià)值的文章主要介紹了Typescript 5.0 發(fā)布:快速概覽。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

探索最令人興奮的功能和更新

作為一種不斷發(fā)展的編程語(yǔ)言,TypeScript 帶來(lái)了大量的改進(jìn)和新功能。在本文中,我們將深入探討 TypeScript 的最新版本 5.0,并探索其最值得關(guān)注的更新。

1. 裝飾器

TypeScript 5.0 引入了一個(gè)重新設(shè)計(jì)的裝飾器系統(tǒng),改進(jìn)了類型檢查和元數(shù)據(jù)生成。裝飾器現(xiàn)在更加無(wú)縫地與類型系統(tǒng)配合,使您能夠編寫(xiě)更干凈、更健壯的代碼。以下是一個(gè)簡(jiǎn)單的方法裝飾器的示例:

function log<This, Args extends any[], Return>(
  target: (this: This, ...args: Args) => Return,
  context: ClassMethodDecoratorContext<
    This,
    (this: This, ...args: Args) => Return
  >
) {
  const methodName = String(context.name);

  function replacementMethod(this: This, ...args: Args): Return {
    console.log(`LOG: Entering method '${methodName}'.`);
    const result = target.call(this, ...args);
    console.log(`LOG: Exiting method '${methodName}'.`);
    return result;
  }

  return replacementMethod;
}

class Calculator {
  @log
  add(a: number, b: number): number {
    return a + b;
  }
}

const calculator = new Calculator();
console.log(calculator.add(2, 3)); 
// "LOG: Entering method 'add'." 
// "LOG: Exiting method 'add'." 
// 5 

在這個(gè)例子中,@log?裝飾器在每次調(diào)用方法時(shí)記錄方法名。除了方法裝飾器,TypeScript 5.0 還支持自動(dòng)訪問(wèn)器裝飾器、getter 和 setter 裝飾器等。您可以在這個(gè)快速指南中了解更多:

TypeScript 5.0 裝飾器快速指南

使用裝飾器擴(kuò)展您的 TypeScript 5.0 工具包

2. const 類型參數(shù)

在 TypeScript 5.0 之前,它的推斷通常會(huì)選擇更一般的類型,例如將?["Alice", "Bob", "Eve"]?推斷為?string[],如果您想要更具體的類型,則必須為其添加?as const

// string[]
const a = ["Alice", "Bob", "Eve"]

// readonly ["Alice", "Bob", "Eve"]
const b = ["Alice", "Bob", "Eve"] as const

而 TypeScript 5.0 允許您在類型參數(shù)聲明中添加?const?修飾符:

declare function fnGood<const T extends readonly string[]>(args: T): void;

// T is readonly ["a", "b", "c"]
fnGood(["a", "b" ,"c"]);

但請(qǐng)記住,const?修飾符僅影響在調(diào)用中編寫(xiě)的對(duì)象、數(shù)組和原始表達(dá)式的推斷,因此無(wú)法(或無(wú)法)通過(guò)?as const?修改的參數(shù)不會(huì)看到任何行為上的變化:

declare function fnGood<const T extends readonly string[]>(args: T): void;
const arr = ["a", "b" ,"c"];

// 'T' is still 'string[]'-- the 'const' modifier has no effect here
fnGood(arr);

3. 支持在 extends 中使用多個(gè)配置文件

TypeScript 5.0 可以在您的?tsconfig.json?中擴(kuò)展多個(gè)配置文件。此功能使得在項(xiàng)目之間共享和管理配置更加容易。以下是如何使用多個(gè)配置文件的示例:

{
  "extends": ["./config/base", "./config/jest"],
  "compilerOptions": {
    "target": "esnext",
    "module": "commonjs",
    "strict": true
  }
}

在這個(gè)例子中,配置文件擴(kuò)展了?base?和?jest?配置,允許您根據(jù)需要組合和覆蓋設(shè)置。

4. 所有枚舉都是聯(lián)合枚舉

在 TypeScript 5.0 中,所有枚舉現(xiàn)在都被視為聯(lián)合枚舉。聯(lián)合枚舉提供了更好的類型安全性和更好的人機(jī)工程學(xué),以處理枚舉值。以下是一個(gè)示例:

enum E {
  A = 10 * 10, // Numeric literal enum member
  B = 'foo', // String literal enum member
  C = Math.random(), // Opaque computed enum member
}

function getStringValue(e: E): string {
  return String(e);
}

const val = getStringValue(E.A); // "100"

TypeScript 5.0 通過(guò)為每個(gè)計(jì)算成員創(chuàng)建唯一類型來(lái)將所有枚舉轉(zhuǎn)換為聯(lián)合枚舉。這意味著現(xiàn)在所有枚舉都可以被縮小并且其成員也可以被引用為類型。

5. — moduleResolution bundler

TypeScript 5.0 引入了一個(gè)名為 bundler 的新模塊解析策略。這個(gè)策略旨在與打包程序(如 WebpackRollup)配合使用,從而實(shí)現(xiàn)更高效、更流暢的構(gòu)建過(guò)程(就像過(guò)去在 Node.js 模塊中的任何相對(duì)導(dǎo)入都需要包括文件擴(kuò)展名一樣)。 要啟用 bundler 模塊解析策略,請(qǐng)?jiān)?tsconfig.json?中使用以下配置:

{
  "compilerOptions": {
    "moduleResolution": "bundler"
  }
}

6. 解析自定義標(biāo)志

TypeScript 5.0 添加了幾個(gè)新標(biāo)志來(lái)自定義模塊解析過(guò)程。這些標(biāo)志提供了更細(xì)粒度的控制,以控制模塊是如何解析的,使您能夠微調(diào)構(gòu)建過(guò)程。以下是一個(gè)簡(jiǎn)要概述:

  • --allowImportingTsExtensions:允許導(dǎo)入帶有 TypeScript 特定擴(kuò)展名(如 .ts、.mts 或 .tsx)的 TypeScript 文件。
  • --resolvePackageJsonExports:強(qiáng)制 TypeScript 在從 node_modules 中的包中讀取時(shí),查看 package.json 文件的 exports 字段。
  • --resolvePackageJsonImports:強(qiáng)制 TypeScript 在從以 # 開(kāi)頭的查找開(kāi)始時(shí),查看 package.json 文件的 imports 字段。
  • --allowArbitraryExtensions:允許通過(guò)查找以 {file basename}.d.{extension}.ts 格式的聲明文件來(lái)導(dǎo)入具有未知擴(kuò)展名的文件。
  • --customConditions:在 TypeScript 從 package.json 的 exports 或 imports 字段解析時(shí),采用額外的條件列表。

7. --verbatimModuleSyntax

TypeScript 5.0 中的新?--verbatimModuleSyntax?標(biāo)志允許您在發(fā)出 JavaScript 代碼時(shí)保留原始模塊語(yǔ)法。這個(gè)特性在與打包程序一起工作時(shí)特別有用,因?yàn)樗梢苑乐剐枰~外的轉(zhuǎn)換。例如:

// Erased away entirely.
import type { A } from "a";

// Rewritten to 'import { b } from "bcd";'
import { b, type c, type d } from "bcd";

// Rewritten to 'import {} from "xyz";'
import { type xyz } from "xyz";

要啟用此標(biāo)志,請(qǐng)將其添加到您的?tsconfig.json

{
  "compilerOptions": {
    "verbatimModuleSyntax": true
  }
}

8. 支持 export type *

TypeScript 5.0 引入了對(duì)?export type *?語(yǔ)法的支持,允許您重新導(dǎo)出另一個(gè)模塊中的所有類型。這種語(yǔ)法特別適用于創(chuàng)建僅包含類型的模塊或聚合來(lái)自多個(gè)源的類型。以下是一個(gè)示例:

// types.ts
export type { Foo } from './foo';
export type { Bar } from './bar';

// index.ts
export type * from './types';
// Also support
export type * as Types from './types';

在這個(gè)例子中,index.ts?模塊使用?export type *?語(yǔ)法重新導(dǎo)出了?types.ts?模塊中的所有類型。

9. JSDoc 中的 @satisfies 支持

TypeScript 5.0 中的新?@satisfies?JSDoc 標(biāo)簽使您能夠指定函數(shù)實(shí)現(xiàn)滿足特定接口。這個(gè)特性在使用結(jié)構(gòu)類型或使用 TypeScript 對(duì) JavaScript 代碼進(jìn)行類型檢查時(shí)特別有用。以下是一個(gè)示例:

// interface Greeter {
//   greet(name: string): number;
// }

/**
 * @typedef {Function} Greeter
 * @param {string} name
 * @returns {string}
 */

/**
 * @satisfies {Greeter}
 */
function greeter(name: string) {
  return `Hello, ${name}!`;
}

在這個(gè)例子中,greeter?函數(shù)帶有?@satisfies?JSDoc 標(biāo)簽,表示它滿足?Greeter?接口。

10. JSDoc中的@overload支持

TypeScript 5.0添加了對(duì)@overload JSDoc標(biāo)簽的支持,允許您為JavaScript代碼中的單個(gè)實(shí)現(xiàn)定義多個(gè)函數(shù)簽名。當(dāng)處理需要支持多種參數(shù)類型或形狀的復(fù)雜函數(shù)時(shí),此功能特別有用。以下是一個(gè)示例:

/**
 * @overload
 * @param {string} a
 * @param {string} b
 * @return {string}
 */

/**
 * @overload
 * @param {number} a
 * @param {number} b
 * @return {number}
 */

/**
 * @param {string | number} a
 * @param {string | number} b
 */
export function add(a, b) {
  if (typeof a === 'number' && typeof b === 'number') {
    return a + b;
  } else if (typeof a === 'string' && typeof b === 'string') {
    return a.concat(b);
  }
}

const numResult = add(1, 2); // 3
const strResult = add('hello', 'world'); // "helloworld"
const errResult = add('hello', 123); // Error: No overload matches this call.

在此示例中,add函數(shù)用兩個(gè)@overload JSDoc標(biāo)記標(biāo)記,指定它可以處理數(shù)字和字符串作為參數(shù)。

11. 在--build下傳遞特定于emit的標(biāo)志

TypeScript 5.0引入了在使用--build標(biāo)志時(shí)傳遞特定于emit的標(biāo)志的能力。此功能允許您在構(gòu)建項(xiàng)目時(shí)微調(diào)輸出,從而對(duì)構(gòu)建過(guò)程進(jìn)行更精細(xì)的控制。一些新聞:

  • --declaration:從項(xiàng)目中的TypeScript和JavaScript文件生成.d.ts文件。
  • --emitDeclarationOnly:僅輸出d.ts文件而不是JavaScript文件。
  • --declarationMap:為d.ts文件創(chuàng)建源映射。
  • --sourceMap:為發(fā)出的JavaScript文件創(chuàng)建源映射文件。
  • --inlineSourceMap:將源映射文件包含在發(fā)出的JavaScript中。

12. 編輯器中的大小寫(xiě)不敏感導(dǎo)入排序

TypeScript 5.0通過(guò)使導(dǎo)入排序不區(qū)分大小寫(xiě)來(lái)改進(jìn)編輯器中的導(dǎo)入排序。這種改變導(dǎo)致組織導(dǎo)入時(shí)出現(xiàn)更自然和直觀的排序順序,從而產(chǎn)生更清晰和可讀的代碼。

13. 完整的switch/case自動(dòng)完成

TypeScript 5.0通過(guò)提供完整的switch/case自動(dòng)完成增強(qiáng)了代碼完成體驗(yàn)。在使用聯(lián)合類型時(shí),編輯器現(xiàn)在可以建議所有可能的情況,減少錯(cuò)過(guò)情況的機(jī)會(huì),使編寫(xiě)全面的switch語(yǔ)句更容易。以下是一個(gè)示例:

type Animal = "cat" | "dog" | "fish";

function speak(animal: Animal): string {
  switch (animal) {
    // TypeScript 5.0 will suggest all possible cases: "cat", "dog", "fish"
  }
}

14. 速度、內(nèi)存和包大小優(yōu)化

TypeScript 5.0帶來(lái)了各種性能優(yōu)化,包括更快的類型檢查、減少的內(nèi)存使用和更小的包大小。這些改進(jìn)使使用TypeScript更加愉快,確保平穩(wěn)高效的開(kāi)發(fā)體驗(yàn)。

15. 破壞性變化和棄用

與任何主要版本發(fā)布一樣,TypeScript 5.0引入了一些破壞性變化和棄用。在升級(jí)之前,仔細(xì)查看發(fā)行說(shuō)明并徹底測(cè)試您的項(xiàng)目是至關(guān)重要的。一些值得注意的破壞性變化包括:

  • 運(yùn)行時(shí)要求:TypeScript現(xiàn)在針對(duì)ECMAScript 2018。TypeScript包還設(shè)置了最低期望引擎為12.20。對(duì)于Node用戶,這意味著TypeScript 5.0的最低版本要求至少是Node.js 12.20及更高版本。
  • lib.d.ts更改:對(duì)如何生成DOM類型的更改可能會(huì)對(duì)現(xiàn)有代碼產(chǎn)生影響。值得注意的是,某些屬性已從number轉(zhuǎn)換為數(shù)字文字類型,并且有關(guān)剪切、復(fù)制和粘貼事件處理的屬性和方法已移動(dòng)到不同的接口。
  • API Breaking Changes:已移至模塊,刪除了一些不必要的接口并進(jìn)行了一些正確性改進(jìn)。
  • 禁止在關(guān)系運(yùn)算符中進(jìn)行隱式強(qiáng)制類型轉(zhuǎn)換:
function func1(ns: number | string) {
  return ns * 4; // Error, possible implicit coercion
}

function func2(ns: number | string) {
  return ns > 4; // Error, possible implicit coercion
}

function func3(ns: number | string) {
  return +ns > 4; // OK
}
  • 枚舉重大改進(jìn):在TypeScript 5.0中,您將不會(huì)看到那些枚舉奇怪的問(wèn)題,以下是兩個(gè)重要的錯(cuò)誤改進(jìn):
// Part1: Assigning an out-of-domain literal to an enum type 
// now errors out as one would expect.
enum SomeEvenDigit {
  Zero = 0,
  Two = 2,
  Four = 4,
}

// Now correctly an error
let m: SomeEvenDigit = 1;

// Part2: Enums declaring values with mixed numeric and 
// indirect string enum references incorrectly create an all-numeric enum.
enum Letters {
  A = 'a',
}
enum Numbers {
  one = 1,
  two = Letters.A,
}

// Now correctly an error
const t: number = Numbers.two;
  • 在—experimentalDecorators下更準(zhǔn)確的參數(shù)裝飾器類型檢查(在構(gòu)造函數(shù)中)
  • 一些已棄用的配置和配置值

結(jié)論

總之,TypeScript 5.0帶來(lái)了許多功能和改進(jìn),那么哪個(gè)功能最有用呢?文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-454388.html

到了這里,關(guān)于Typescript 5.0 發(fā)布:快速概覽的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • RocketMQ 5.0 快速入門(mén)

    RocketMQ 5.0 快速入門(mén)

    Apache RocketMQ 自誕生以來(lái),因其架構(gòu)簡(jiǎn)單、業(yè)務(wù)功能豐富、具備極強(qiáng)可擴(kuò)展性等特點(diǎn)被眾多企業(yè)開(kāi)發(fā)者以及云廠商廣泛采用。歷經(jīng)十余年的大規(guī)模場(chǎng)景打磨,RocketMQ 已經(jīng)成為業(yè)內(nèi)共識(shí)的金融級(jí)可靠業(yè)務(wù)消息首選方案,被廣泛應(yīng)用于互聯(lián)網(wǎng)、大數(shù)據(jù)、移動(dòng)互聯(lián)網(wǎng)、物聯(lián)網(wǎng)等領(lǐng)域的

    2024年02月16日
    瀏覽(16)
  • 探索容器化世界:開(kāi)源容器生態(tài)系統(tǒng)概覽 | 開(kāi)源專題 No.61

    探索容器化世界:開(kāi)源容器生態(tài)系統(tǒng)概覽 | 開(kāi)源專題 No.61

    Stars: 15.7k License: Apache-2.0 ingress-nginx 是一個(gè)使用 NGINX 作為反向代理和負(fù)載均衡器的 Kubernetes Ingress 控制器。該項(xiàng)目具有以下核心優(yōu)勢(shì): 使用 NGINX 作為反向代理和負(fù)載均衡器 支持多個(gè)版本,包括 1.9.1、1.8.2 等 提供詳細(xì)的變更日志以及支持文檔 Stars: 66.8k License: Apache-2.0 Moby 是一

    2024年01月20日
    瀏覽(49)
  • 重建即單體,重建大師5.0發(fā)布 模方3.0單體化功能永久免費(fèi)

    重建即單體,重建大師5.0發(fā)布 模方3.0單體化功能永久免費(fèi)

    今年8月,自然資源部出臺(tái)了《實(shí)景三維中國(guó)建設(shè)技術(shù)大綱(2021)》,意味著實(shí)景三維的藍(lán)圖全面鋪開(kāi) 。同時(shí)開(kāi)展實(shí)景三維中國(guó)建設(shè)又是“十四五”時(shí)期基礎(chǔ)測(cè)繪轉(zhuǎn)型升級(jí)發(fā)展的重要任務(wù)。除此之外,李德仁院士也表示在新基建建設(shè)過(guò)程中,需要建立智慧城市、智慧產(chǎn)業(yè)從而

    2024年02月03日
    瀏覽(22)
  • 鴻蒙5.0發(fā)布時(shí)間已定!何處尋得移動(dòng)開(kāi)發(fā)加速器?

    鴻蒙5.0發(fā)布時(shí)間已定!何處尋得移動(dòng)開(kāi)發(fā)加速器?

    直接在百度上搜索「鴻蒙5.0發(fā)布時(shí)間」,出來(lái)的結(jié)果,那一個(gè)比一個(gè)焦慮~~ 百度的AI基于綜合內(nèi)容判斷得出,鴻蒙5.0的發(fā)布時(shí)間在2023-04-17 百度知道推的答案是202年年4月中 但不管幾月,“鴻蒙元年”似乎都是確定的,就是2024年。 因?yàn)?,華為放話:鴻蒙5.0不再支持安卓操作系

    2024年01月25日
    瀏覽(16)
  • Linux服務(wù)器快速安裝MongoDB-5.0

    Linux服務(wù)器快速安裝MongoDB-5.0

    最近開(kāi)始體驗(yàn)FastGPT開(kāi)源知識(shí)庫(kù)問(wèn)答系統(tǒng),用他們?cè)囍_(kāi)發(fā)調(diào)試一些小助手。這中間需要使用到MongoDB,就在自己服務(wù)器上進(jìn)行了安裝,特此記錄下。 環(huán)境說(shuō)明:阿里云ECS,2核8G,X86架構(gòu),CentOS 7.9操作系統(tǒng)。 1.打開(kāi)MongoDB社區(qū)版下載頁(yè)面,選擇我們想要安裝的版本、操作系統(tǒng)、

    2024年02月04日
    瀏覽(30)
  • JDK 21 發(fā)布,新特性概覽及字符串模板詳細(xì)介紹

    Java 21 已于 2023 年 9 月 19 日發(fā)布,是 Oracle 標(biāo)準(zhǔn) Java 實(shí)現(xiàn)的下一個(gè)長(zhǎng)期支持(LTS)版本。Java 21 具有以下 15 項(xiàng)新特性。 430: String Templates (Preview) 字符串模板,可以像其他語(yǔ)言那樣子方便的做字符串拼接,是+號(hào),StringBuilder,MessageFormat之外更方便的字符串拼接方法。 431: Sequenc

    2024年02月02日
    瀏覽(28)
  • 新增WebDB和ChatGPT組件,支持對(duì)ChatGPT資產(chǎn)進(jìn)行納管,JumpServer堡壘機(jī)v3.5.0發(fā)布

    新增WebDB和ChatGPT組件,支持對(duì)ChatGPT資產(chǎn)進(jìn)行納管,JumpServer堡壘機(jī)v3.5.0發(fā)布

    2023年7月24日,JumpServer開(kāi)源堡壘機(jī)正式發(fā)布v3.5.0版本。在這一版本中,新生代數(shù)據(jù)庫(kù)連接組件——問(wèn)題終結(jié)者Chen強(qiáng)勢(shì)來(lái)襲,替代原有的OmniDB組件,在兼容舊版本的同時(shí),解決了舊組件性能不足的問(wèn)題,為用戶提供更穩(wěn)定、更強(qiáng)大、更持久的服務(wù)支持。 同時(shí),JumpServer開(kāi)源項(xiàng)目

    2024年02月16日
    瀏覽(10)
  • 探索 TypeScript 元組的用例

    探索 TypeScript 元組的用例

    元組擴(kuò)展了數(shù)組數(shù)據(jù)類型的功能。使用元組,我們可以輕松構(gòu)造特殊類型的數(shù)組,其中元素相對(duì)于索引或位置是固定類型的。由于 TypeScript 的性質(zhì),這些元素類型在初始化時(shí)是已知的。使用元組,我們可以定義可以存儲(chǔ)在數(shù)組中每個(gè)位置的數(shù)據(jù)類型。 在本教程中,我們將介紹

    2024年02月13日
    瀏覽(21)
  • 新增守護(hù)進(jìn)程管理、支持添加MySQL遠(yuǎn)程數(shù)據(jù)庫(kù),支持PHP版本切換,1Panel開(kāi)源面板v1.5.0發(fā)布

    新增守護(hù)進(jìn)程管理、支持添加MySQL遠(yuǎn)程數(shù)據(jù)庫(kù),支持PHP版本切換,1Panel開(kāi)源面板v1.5.0發(fā)布

    2023年8月14日,現(xiàn)代化、開(kāi)源的Linux服務(wù)器運(yùn)維管理面板1Panel正式發(fā)布v1.5.0版本。 在這個(gè)版本中,1Panel新增了守護(hù)進(jìn)程管理功能;支持添加MySQL遠(yuǎn)程數(shù)據(jù)庫(kù);支持添加FTP/S和WebDAV的SFTP服務(wù);支持PHP版本切換。此外,我們進(jìn)行了40多項(xiàng)功能更新和問(wèn)題修復(fù)。1Panel應(yīng)用商店也新增了

    2024年02月13日
    瀏覽(24)
  • LLM大語(yǔ)言模型助力DataEase小助手,新增氣泡地圖,DataEase開(kāi)源數(shù)據(jù)可視化分析平臺(tái)v2.5.0發(fā)布

    LLM大語(yǔ)言模型助力DataEase小助手,新增氣泡地圖,DataEase開(kāi)源數(shù)據(jù)可視化分析平臺(tái)v2.5.0發(fā)布

    2024年4月8日,DataEase開(kāi)源數(shù)據(jù)可視化分析平臺(tái)正式發(fā)布v2.5.0版本。 這一版本的功能升級(jí)包括:新增DataEase小助手支持,通過(guò)結(jié)合智能算法和LLM(即Large Language Model,大語(yǔ)言模型)能力,DataEase小助手能夠準(zhǔn)確抓取用戶提問(wèn)的關(guān)鍵信息,針對(duì)用戶疑問(wèn)給出高質(zhì)量的回答,幫助用戶

    2024年04月16日
    瀏覽(33)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包