自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

六個 TypeScript 實用函數(shù)

開發(fā)
在本文中,我們將分享6個開發(fā)者必須知道的 TypeScript 實用函數(shù),并為每個函數(shù)提供示例和解釋。

TypeScript 是 JavaScript 的超集,它為該語言添加了靜態(tài)類型和其他功能。TypeScript 最強大的功能之一是它對實用函數(shù)的支持,它允許開發(fā)人員以強大的方式操作類型。 

在本文中,我們將分享6個開發(fā)者必須知道的 TypeScript 實用函數(shù),并為每個函數(shù)提供示例和解釋。

01、Partial<T>

Partial函數(shù)允許您通過將原始類型 T 的所有屬性設為可選來創(chuàng)建新類型。當您有一個具有許多屬性的復雜類型時,這會很有用,但您只需要在特定的上下文中提供其中的一些。

例如,假設您有一個具有多個必需屬性的 Person 接口:

interface Person {
  firstName: string;
  lastName: string;
  age: number;
  address: Address;
}


interface Address {
  street: string;
  city: string;
  state: string;
  zip: string;
}

如果你想創(chuàng)建一個新類型,它具有與 Person 相同的屬性,但所有屬性都是可選的,你可以像這樣使用 Partial 效用函數(shù):

type PartialPerson = Partial<Person>;

現(xiàn)在您可以創(chuàng)建一個 PartialPerson 類型的變量,并且只提供您需要的屬性:

const partialPerson: PartialPerson = {
  firstName: 'John',
  lastName: 'Doe'
};

02、Required<T>

Required 實用程序函數(shù)通過使原始類型 T 的所有屬性成為必需來創(chuàng)建新類型。當您有一個帶有可選屬性的類型,但您希望確保在特定上下文中提供所有屬性時,這可能很有用。

繼續(xù)前面示例中的 Person 接口,假設您要創(chuàng)建一個新類型,該類型具有 Person 所需的所有屬性。您可以像這樣使用 Required 實用程序函數(shù):

type RequiredPerson = Required<Person>;

現(xiàn)在您可以創(chuàng)建 RequiredPerson 類型的變量并確保提供所有屬性:

const requiredPerson: RequiredPerson = {
  firstName: 'John',
  lastName: 'Doe',
  age: 30,
  address: {
    street: '123 Main St',
    city: 'Anytown',
    state: 'CA',
    zip: '12345'
  }
};

03、Readonly<T>

Readonly 實用程序函數(shù)通過將原始類型 T 的所有屬性設置為只讀來創(chuàng)建新類型。當您有一個在創(chuàng)建后不應修改的類型時,這會很有用。

例如,假設您有一個具有多個屬性的用戶界面:

interface User {
  id: number;
  username: string;
  email: string;
  password: string;
}

如果你想創(chuàng)建一個新類型,它具有與 User 相同的屬性,但所有屬性都是只讀的,你可以像這樣使用 Readonly 實用函數(shù):

type ReadonlyUser = Readonly<User>;

現(xiàn)在你可以創(chuàng)建一個 ReadonlyUser 類型的變量,并確保它的任何屬性都不能被修改:

const user: ReadonlyUser = {
  id: 1,
  username: 'johndoe',
  email: 'john.doe@example.com',
  password: 'password123'
};


user.id = 2; // Error: Cannot assign to 'id' because it is a read-only property.

04、Record<K, T>

Record 實用程序函數(shù)通過將類型 K 的鍵映射到類型 T 的值來創(chuàng)建新類型。當您要創(chuàng)建表示具有特定鍵的一組值的類型時,這會很有用。

例如,假設您有一組要表示為對象的錯誤代碼,其中鍵是錯誤代碼,值是錯誤消息:

type ErrorCode = 'E001' | 'E002' | 'E003';


type ErrorMessages = Record<ErrorCode, string>;


const errorMessages: ErrorMessages = {
  E001: 'An error occurred.',
  E002: 'Another error occurred.',
  E003: 'Yet another error occurred.'
};

現(xiàn)在您可以通過相應的錯誤代碼訪問錯誤消息:

const errorMessage = errorMessages['E001']; // 'An error occurred.'

05、Exclude<T, U>

Exclude 實用程序函數(shù)通過從類型 T 中排除聯(lián)合 U 中的所有類型來創(chuàng)建新類型。這在您想要定義僅包含某些類型的類型時非常有用。

例如,假設您的 Color 類型包含多個可能的顏色值:

type Color = 'red' | 'green' | 'blue' | 'yellow';

如果你想定義一個排除某些顏色值的類型,你可以像這樣使用 Exclude 實用函數(shù):

type PrimaryColor = Exclude<Color, 'green' | 'purple'>;

現(xiàn)在您可以創(chuàng)建一個 PrimaryColor 類型的變量并確保它只包含原色:

const primaryColor: PrimaryColor = 'red'; // OK
const secondaryColor: PrimaryColor = 'green'; // Error: Type 'green' is not assignable to type 'PrimaryColor'.

06、Omit<T, K>

Omit 實用程序函數(shù)通過從原始類型 T 中省略指定的屬性 K 來創(chuàng)建新類型。當您有一個具有許多屬性的類型,但您想創(chuàng)建一個沒有某些屬性的新類型時,這會很有用。

例如,假設您有一個具有多個屬性的用戶界面:

interface User {
  id: number;
  username: string;
  email: string;
  password: string;
}

如果你想創(chuàng)建一個新的類型,它具有除密碼之外的用戶的所有屬性,你可以使用 Omit 實用函數(shù),如下所示:

type UserWithoutPassword = Omit<User, 'password'>;

現(xiàn)在您可以創(chuàng)建一個 UserWithoutPassword 類型的變量,而無需提供密碼屬性:

const userWithoutPassword: UserWithoutPassword = {
  id: 1,
  username: 'johndoe',
  email: 'john.doe@example.com',
};

總之,TypeScript 實用程序函數(shù)是開發(fā)人員的強大工具,允許更靈活和可重用的代碼。

通過有效地理解和使用這些實用函數(shù),開發(fā)人員可以創(chuàng)建更健壯和可維護的 TypeScript 代碼。這些功能只是 TypeScript 語言的一小部分,但它們會對您的代碼質量和開發(fā)團隊的工作效率產(chǎn)生重大影響。

責任編輯:華軒 來源: web前端開發(fā)
相關推薦

2022-12-19 14:38:59

2021-01-21 08:00:00

開發(fā)工具VS Code

2024-01-08 18:05:19

PyCharm技巧功能

2022-05-13 09:55:19

Python內置函數(shù)

2023-04-19 15:26:52

JavaScriptES13開發(fā)

2022-04-04 21:33:48

進度條Python

2025-04-02 08:20:00

Python自動化文件管理腳本模板

2021-10-09 09:35:28

開發(fā)JavaScript 代碼

2022-06-01 09:06:58

ES6數(shù)組函數(shù)

2021-11-30 07:01:19

Python自動化腳本

2023-12-22 09:14:48

EDA數(shù)據(jù)分析探索性數(shù)據(jù)分析

2022-02-25 09:19:32

TypeScript輔助函數(shù)枚舉

2022-11-15 16:54:54

2019-12-19 14:42:40

開源數(shù)據(jù)科學項目

2015-07-28 10:52:36

DevOps

2021-06-11 13:30:28

神經(jīng)網(wǎng)絡機器學習

2023-05-23 18:23:32

Linux

2024-03-06 10:50:30

云計算云實例云提供商

2024-05-10 09:28:57

Python面向對象代碼

2022-04-06 18:46:35

云戰(zhàn)略云計算云服務
點贊
收藏

51CTO技術棧公眾號