[TypeScript] union type · any · unknown
- -
π£ union type · any · unknown 곡ν΅μ μ΄λκΉ?
λ€μ΄κ°κΈ° μ μ μ΄ μΈκ°μ§μ 곡ν΅μ μ μκ°ν΄λ³΄λ©΄! μ΄λ€ νμ μ μ’ λ₯κ° λ€μ΄μ¬μ§ νμ€νκ² λͺ¨λ₯Ό λ μ¬μ©νλ€λ μ μ λ€ μ μλ€. νλ‘μ νΈ λ΄μμ μ¬μ©ν λμλ ν΄λΉ νμ μ μ¬μ©νλ κ²½μ°λ number νΉμ string νμ λ μ€μ λ€μ΄μ¨λ€λ μ§...μλλ©΄ μ΄λ€ νμ μ΄ λ€μ΄μ¬ μ§ λͺ°λΌμ μ€μ νλ€λ μ§... 무νΌ..!_! ν΄λΉ μΈ κ°μ§μ κ°λ μ λν΄μ λ€λ€λ³΄λλ‘ νμ!_! κΌ¬μ°κΌ¬μ°!
(μ λ νμ μ μν μ λλ₯Ό κ°μ Έμ΄)
μ°Έκ³ λ‘ typescript μ€μΉ λ° κ°λ μ λν΄μ μκ³ μΆλ€λ©΄ μ΄μ μ λ¦¬κΈ μ°Έκ³
[TypeScript] νμ μ€ν¬λ¦½νΈ
π£ νμ μ€ν¬λ¦½νΈ μμ!μ€λμ νμ μ€ν¬λ¦½νΈμ λν΄μ μ 리ν΄λ³΄κ³ μ νλ€. ν μ¬μ€ μ΄μ μ 곡λΆνλ©΄μ Notionκ³Ό gitμ μ½λλ‘ μ 리ν΄λλ건λ°, μ΄λ¦¬μ 리 μ리쑰리 κ°μ Έμμ μ 리보λλ‘ νκ² λ°!_!
haileyham.tistory.com
π£ μ λμ¨ νμ (Union Type)
1. κ°λ
μ§μ λ μ¬λ¬ μ νμ 보μ ν μ μλ μ νμΌλ‘, λ³μκ° μ¬λ¬ μ ν μ€ νλκ° λ μ μμ. μ΄ λ³μμ string νΉμ number λ€μ΄μ¬ μ μλ€λΌκ³ νμ μ§μ νκ³ μΆμ λ μ¬μ©. | μ°μ°μ μ¬μ©
- νμ 2κ° μ΄μ ν©μΉ μλ‘μ΄ νμ
// string νΉμ number
let value: string | number = "Hello";
2. μ½λλ‘ λ€μ μ΄ν΄λ³΄κΈ°
array νΉμ obejct μΌ κ²½μ° ?
let μ«μλ€: (number|string)[] = [1, '2', 3];
let μ€λΈμ νΈ: { a: number | string } = { a: 123 };
π£ μ λ νμ (Any Type)
1. κ°λ
λͺ¨λ κ°μ 보μ ν μ μλ μ νμΌλ‘, μ ν κ²μ¬λ₯Ό λΉνμ±ννκ³ μ΅λμ μ μ°μ±μ μ 곡.
- λͺ¨λ μλ£νμ νμ©
- νμ μ€ν¬λ¦½νΈ μ¬μ©νλ μλ―Έκ° μ¬λΌμ§ μλ μμΌλ, νμν λλ§ μ¬μ©νκΈ°
- νμ λ²κ·Έ κ΄λ ¨ μλ¬λ₯Ό λ°μμμΌμ£Όμ§ μμ
// μ무 νμ
μ΄λ μ¬ μ μμ
let anything: any = 42;
2. μ½λλ‘ μ΄ν΄λ³΄κΈ°
μλμ κ²½μ° μ½λλ₯Ό μ΄ν΄λ³Ό λ μλ¬λ₯Ό λ°μμμΌ μ£Όμ§ μλ κ²μ νμΈ ν μ μμ. μ¬λ1μ κ²½μ° any νμ μ΄κ³ λ§μ§λ§μ [] arrayλ₯Ό λ΄μμ§λ§, λ³μ1 νμ μ stringμΌλ‘ νμ λ μ¬λ1(array)μ΄ λ€μ΄κ°λ errorλ₯Ό λΏλΏ νμ§ μμ.
let μ¬λ1: any; //μ무거λ λ€μ΄μ¬ μ μμ
μ¬λ1 = 123;
μ¬λ1 = [];
// μλ¬λ₯Ό λ°μμμΌμ£Όμ§ μμ
// μμμ μ¬λλ []λ‘ λμ΄μκ³ , λ³μ1μ stringμ΄μ΄μ λ§μ§ μμ§λ§ μλ¬λ₯Ό λ°μμμΌμ£Όμ§ μμ
// anyμ΄κΈ° λλ¬Έμ λ§κ·Έλλ‘ μ무거λ μ¬ μ μκΈ° λλ¬Έ
let λ³μ1: string = μ¬λ1;
3. λ λμκ°μ!
λ³κ²½νλ €λ λ³μμ νμ μ΄ λͺ νν΄μΌ ν¨. μλμ κ²½μ° string νΉμ numberμ΄ λ€μ΄μ¨λ€ νλλ° +1μ ν κ²½μ°, νμ μ λ°λΌ ν΄λΉ κ²°κ³Ό κ°μ΄ λ¬λΌμ§κΈ° λλ¬Έμ error λΏλΏ.
λ§μ½ κΈ°μ‘΄μ '1' νΉμ 1μ΄ ν λΉ λμ΄ μμλ€λ©΄? stringμ κ²½μ° '11'μ΄ λκ³ numberμ κ²½μ° 2κ° λκΈ° λλ¬Έμ!_!
let κ³μ°: string | number //union typeμ μλ‘μ΄νμ
μ λ§λ€μ΄ λ΄λ κ²
κ³μ° + 1; //error
κ·ΈλΌ stringκ³Ό number κ° λ€μ μ΄ν΄λ³΄λ©΄ ν΄λΉ κ²°κ³Ό κ°μ΄ μ΄λ κ² λμ¨λ€λ κ²μ νμΈ ν μ μμ!_!
let κ³μ°1: string = '123';
let κ³μ°2: number = 123;
κ³μ°1 + 1; //'1234'
κ³μ°2 + 1; //124
π£ μΈλ Έμ΄ νμ (Unknown)
1. κ°λ
λͺ¨λ κ°μ 보μ ν μ μμ§λ§ μμ μ μννκΈ° μ μ μ ν νμΈμ΄λ μ ν μ΄μ€μ μ΄ νμν μ ν. μ΅κ·Όμλ any 보λ€λ unknownμ μ¬μ©νλ€κ³ ν¨. anyμ κ°μ΄ λͺ¨λ νμ μ λ£μ μ μμ.
// μ무 νμ
μ΄λ μ¬ μ μμ§λ§ anyνμ
λ³΄λ€ μμ
// unknownμ νΉμ λ°©μμΌλ‘ μ¬μ© μ μ μ ν νμΈ νμ
let unknownValue: unknown = "Could be anything";
2. any νμ κ³Ό λ€λ₯Έ μ ?
'unknown' μ νμ 'any'λ³΄λ€ μμ ν λμ. μ΄λ€ κ°μ΄λ λ΄μ μ μμ§λ§ anyμλ λ¬λ¦¬ νΉμ λ°©μμΌλ‘ μ¬μ©νκΈ° μ μ μ ν νμΈμ΄λ μ΄μ€μ μ μν νμ.
- λͺ¨λ μλ£ λ£μ μ μμ (any 곡ν΅μ )
- μλ£ λ£μ΄λ νμ μ κ·Έλλ‘ unknown (anyμ λ€λ₯Έμ - any λ³΄λ€ μμ ν μ΄μ )
3. μ½λλ‘ μ΄ν΄λ³΄κΈ°
μμμ μ΄ν΄λ³Έ κ²κ³Ό κ°μ΄ unknownμλ λͺ¨λ νμ μ μ’ λ₯λ₯Ό λ£μ μ μμ§λ§, νμ μ κ·Έλλ‘ unknwon μ΄λΌλ κ²μ μ μ μλ€. κ·Έλ κΈ° λλ¬Έμ ν΄λΉ unknown νμ μ λ€λ₯Έ κ³³μ λ£μΌλ €κ³ νλ©΄ errorκ° λΏλΏ λλ€. λ€μ μ½λμμ μ΄ν΄λ³΄λ©΄ μ μ μμ!
// unknown νμ
(anyλ³΄λ€ μμ )
let μ¬λ4: unknown;
μ¬λ4 = 123;
μ¬λ4 = {};
// μλ¬ λ°μ : μμμ μ¬λ 4 {} λμ΄μκ³ , λ³μ2λ stringμ΄κΈ° λλ¬Έμ λ§μ§ μμ
let λ³μ2: string = μ¬λ4; //error
// μ μ μλ : μμμ μ¬λ 4 {}, λ³μ3λ {} μ΄κΈ° λλ¬Έ
// strictλͺ¨λμμλ x
// μλ£ μ§μ΄λ£μ΄λ νμ
μ κ·Έλλ‘ unknown
let λ³μ3: {} = νμ4; // // strictλͺ¨λμμλ error
4. λ λμκ°μ!
λ€μμ κ²½μ° κ³μ°3 - 1μμ errorκ° λλλ°, κ·Έ μ΄μ λ unknownμ΄ number μλκΈ° λλ¬Έμ
let κ³μ°3: unknown = 1;
//μ«μνμ
μ΄μ¬μΌ μ«μμ²λΌ μ°μ°ν¨. unknownμ΄ μκΈ° λλ¬Έμ error
κ³μ°3 - 1; //error
π£ μ΄κ±΄ μ΄λ!
let user = 'ham';
let age = undefined;
let married = false;
let ν = [user, age, married];
let user :string = 'ham';
let age : undefined | number = undefined; //undefinedλ‘ λ£μΌλ©΄ strict λͺ¨λμμλ error
let married :boolean = false;
let ν1: (string | number | undefined | boolean)[] = [user, age, married];
νμ μ 리 μ€λλ§μ΄κ΅°!_!
λ€μ μκ°μλ void type μ λν΄μ μ΄ν΄λ³΄μκΎΈ!
[TypeScript] void type
π£ λ€μ΄κ°κΈ° μ μμ΄λ²μλ void typeμ λν΄μ μ 리ν΄λ³΄μ₯!_! void νμ μ ν¨μμ νμ μ μ§μ ν λ μ¬μ©νλ€κ³ μκ°νλ©΄ λλ€. 'void'μ κ²½μ° κ°μ΄ μμμ λνλ΄λλ°, μ무κ²λ λ°ννμ§ μλ(=return
haileyham.tistory.com
'FrontEnd > TypeScript' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[TypeScript] νμ λ³μ type alias (0) | 2024.06.20 |
---|---|
[TypeScript] κ°μ²΄μ νμ κ³Ό readonly (0) | 2024.06.20 |
[TypeScript] Narrowing κ³Ό Assertion (0) | 2024.06.20 |
[TypeScript] void type Β· ν¨μμ νμ (1) | 2024.06.20 |
[TypeScript] νμ μ€ν¬λ¦½νΈ (0) | 2024.06.18 |
λΉμ μ΄ μ’μν λ§ν μ½ν μΈ
μμ€ν κ³΅κ° κ°μ¬ν©λλ€