TS-5

  • 交叉類型&:交集
type A = string & number // never
image.png

image.png

image.png

image.png
  • interface使用extends的話,發現有類型沖突會直接沖突,因此在定義可擴展的類型時最好用interface
  • 函數的交集會得到參數的并集
type A = {
  method: (n:string) => void
}

type B = {
  method: (n:number) => void
} & A

const x:B = {
  // n:string | number
  method:(n)=>{
   console.log(n);
  }
}

----------------------------------------

type Fn1 = (n:string) => void
type Fn2 = (n:number) => void
type Fn = Fn1 & Fn2
// n: string | number
const fn: Fn = (n)=> console.log();
  • 具體理解 |,ts聲明時檢查緊,賦值時檢查松
type A = {
  name: string
}

type B = {
  age: number
}

type C = A | B

// 都正確
const p:C = {name:'x'}
const p:C = {age: 12}

// error,不能有gender屬性
const x:C = {
  name:'',
  age: 12,
  gender: ''
}
------------------------------------
// 不報錯
const d = {
  name: '',
  age: 12,
  gender: '' 
}
const p:C = d
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容