λ°μν
λ¬Έμ
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;
μΆμ²
λ°μν
'π Typescript > type-challenges' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[TS] type-challenges: 268 - If (0) | 2023.07.19 |
---|---|
[TS] type-challenges: 189 - Awaited (0) | 2023.07.17 |
[TS] type-challenges: 18. Length of Tuple (0) | 2023.07.05 |
[TS] type-challenges: 14. First of Array (0) | 2023.07.04 |
[TS] type-challenges : 11. Tuple to Object (0) | 2023.07.03 |