TypeScript中的 & 運算符是什么


今天在看typescript代碼的時候,作為一個小白發現代碼中有一個&符號,開始以為是按位與但說不通,最后查了一下是交叉類型。

一. 簡介

  就是將多個類型合並為一個類型。

interface IPerson {
  id: string;
  age: number;
}

interface IWorker {
  companyId: string;
}

type IStaff = IPerson & IWorker;

const staff: IStaff = {
  id: 'E1006',
  age: 33,
  companyId: 'EXE'
};

console.dir(staff)

 二.當合並名相同類型不同時

合並內容會變為never

三.使用

在實際項目開發過程中,我們經常需要開發一些功能函數,為了保證函數的靈活性和可復用性,這些函數往往會定義一些輸入參數,而這些參數根據是否必填,又可分為必填參數和可選參數。當必填參數和可選參數有大部分參數是相同的情況下,我們就可以利用 TypeScript 交叉類型來解決復用問題。好了,廢話不多說,直接看個示例:

ArgBase接口

export interface ArgBase<T> {
  name?: string;
  description?: string;
  hidden?: boolean;
  parse: ParseFn<T>;
  default?: T | (() => T);
  input?: string;
  options?: string[];
}

RequiredArg接口

export type RequireArg<T> = ArgeBase<T> & {
  required: true;
  value: T        
}

OptionalArg接口

export type OptionalArg<T> = Argbase<T> & {
  required: false;
  valuse?: T;
}

顧名思義,ArgBase 接口是基礎參數接口,它是 RequiredArg 和 OptionalArg 接口的公共部分。示例代碼中,RequiredArg 和 OptionalArg 的差異就是 required 字段和與之對應的 value 值。通過交叉類型,可以讓我們更好地進行代碼復用,並方便地實現把多種類型疊加到一起成為一種新的類型。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM