- 交叉類型
&
:交集
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