π Typescript/type-challenges
[TS] type-challenges: 43. Exclude
μ λ¬
2023. 7. 14. 22:10
λ°μν
λ¬Έμ
Tμμ Uμ ν λΉν μ μλ νμ μ μ μΈνλ λ΄μ₯ μ λ€λ¦ Exclude<T, U>λ₯Ό μ΄λ₯Ό μ¬μ©νμ§ μκ³ κ΅¬ννμΈμ.
type Result = MyExclude<'a' | 'b' | 'c', 'a'> // 'b' | 'c'
νμ΄
νμ μ΄ μλ λ¨μ λ¬Έμ μλ€κ³ μκ°ν΄λ³΄μ
function MyExclude(T, U) {
if(T === U) return;
else return T;
}
μ΄λ° λλμ΄λ€. Tμ ν΄λΉνλ νμ λ€μ€ Uμ κ°μ νμ μ΄ μλ€λ©΄ 그건 λ°ννμ§ μκ³ , κ°μ§ μλ€λ©΄ λ°ννλ λ‘μ§μ΄λ€.
νμ μ€ν¬λ¦½νΈμμ ===μ ν΄λΉνλ λΆλΆμ extendsλ‘ λ체 κ°λ₯νκ³
μ무κ²λ λ°ννμ§ μλ κ²½μ°λ never μ΄λΌλ νμ μΌλ‘ μΈ μ μκ² λ€.
type MyExclude<T, U> = T extends U ? never : T;
μΆμ²
λ°μν