[TS] : any unknown union
any < unknown < union
κ°μΈμ μΌλ‘ TS κ° JS μ κ°μ₯ ν° μ°¨λ³μ μ λκ³ μλ λΆλΆμ΄λΌ ν¨μ, λ°μ΄ν°μ νμμ "λͺ μ"ν μ μλ λΆλΆμ΄λΌκ³ μκ°νλ€.
λ°μ΄ν°μ νμ μ΄ "λ°νμ"μ κ²°μ λλ JSμ λ¬λ¦¬ TSλ μ»΄νμΌ κ³Όμ μμ νμ μ΄ μ ν΄μ§κΈ° λλ¬Έμ, 보ν΅μ TSμμ κ° λ°μ΄ν°μ νμ μ λͺ μμ μΌλ‘ μ§μ ν΄ μ£Όμ§λ§,
μ΄μ© μ μμ΄ κ°λ³μ μΈ νμ
μ λ°μ΄ν°λ₯Ό μ μ₯νκ³ μΆλ€λ©΄ anyλ₯Ό μ°κΈ°λ³΄λ€λ unknownμ μ¬μ©λκ²μ΄ μ’μ κ² κ°λ€.
κ·Έλ¦¬κ³ , κ°λ³μ μΈ νμ
μ μΌμΌμ΄ μ μν μ μλ€λ©΄ union μ μ¬μ©νλ κ²μ΄ μ μΌ μ’μ λ°©μμ΄λΌλ μκ°μ΄ λ λ€.
λ¬Όλ‘ κ°μΈμ μΈ μκ°μ΄λ€.
any
TS μμ any νμ μ λͺ¨λ νμ μ μνΌ νμ μ΄λΌκ³ μκ°νλ©΄ λλ€.
μ΄λ€ νμ μ κ°μ΄λ μ μ₯ν μ μλ€λ μλ―Έλ₯Ό κ°κ³ μκΈ° λλ¬Έμ΄λ€.
JS μ object νμ κ³Ό κ°μ μ΅μμ νμ μ΄λΌκ³ μκ°νλ©΄ νΈνλ€.
any μ¬μ© μ¬λ‘
let anything: any;
anything = 5;
anything = 'Hello';
anything = { id: 1, name: 'John' };
anything μ΄λΌλ μλ³μμ νμ μ anyλ‘ λͺ μν΄μ£Όμλ€.
λ°λΌμ μ¬ν λΉμ ν΅ν΄ μ«μ / λ¬Έμ / objectμ λͺ¨λ ννκ° μ μμ μΌλ‘ λ΄μμ§λ κ²μ λ³Ό μ μλ€.
TS μμ any λ₯Ό μ¬μ©ν¨μ λνμ¬
μ°λ¦¬κ° TS λ₯Ό μ¬μ©νλ μ£Όλ μ΄μ μ λͺ©μ μ€μ νλλ νλ‘κ·Έλ¨μ νμ μμ μ±μ ν보νκΈ° μν κ²μ΄λ€.
κ·Έλ°λ°, any νμ μ κ·Έ λͺ©μ μ±μμ μ‘°κΈ λ²μ΄λ λλμ΄ λ λ€.
any νμ μ μ½λμ μμ μ±κ³Ό μ μ§ λ³΄μμ±μ μ ν΄ν μ μλ€κ³ ν©λλ€.
unknown
anyμ λ체μ
unknown νμ μ any νμ κ³Ό λΉμ·ν μν μ νμ§λ§ λ μμ ν λ°©μμΌλ‘ λμνλ€.
unknown νμ μ λ³μμλ anyμ κ°μ΄ λͺ¨λ νμ μ κ°μ μ μ₯ν μ μμ΄μ.
νμ§λ§, κ·Έ κ°μ λ€λ₯Έ νμ μ λ³μμ ν λΉνκΈ° μν΄μ λͺ μμ μΌλ‘ νμ μ νμΈν΄μΌλ§ νλ€.
unknown μ¬μ© μ¬λ‘
μλ³μμ νμ μ unknownμΌλ‘ μ§μ ν΄μ£Όκ³ , ν λΉνλ κ°μ λ¬Έμμ΄λ‘ ν λΉνλ€.
let unknownValue: unknown = 'λλ λ¬Έμμ΄';
console.log(unknownValue); // λλ λ¬Έμμ΄
let stringValue: string;
stringValue = unknownValue; // μλ¬ λ°μ! unknownValueκ° stringμμ΄ λ³΄μ₯μ΄ μλ¨
stringValue = unknownValue as string;
console.log(stringValue); // λλ λ¬Έμμ΄
λ¬Έμμ΄λ‘ μ§μ ν μλ³μμ μμ λ¬Έμμ΄μ ν λΉν μλ³μμ λ±νΈμ°μ°μλ₯Ό ν΅ν΄ λ¬Έμμ΄μ λ΄κ³ μλ unknown λ°μ΄ν°λ₯Ό ν λΉνλ€λ©΄,
errorκ° λ°μμ΄ λλ€.
λ€λ§, unknownμ aliasλ‘ λ¬Έμμ΄μ΄λΌκ³ λͺ μμ μΌλ‘ ννν΄μ€λ€λ©΄, μ μμ μΌλ‘ ν λΉμ΄ λκ³ , console.logμλ μΆλ ₯κ°μ΄ μ μμ μΌλ‘ ν λΉν λ¬Έμμ΄ κ°μ΄ λμ€λκ²μ νμΈ ν μ μλ€.
κ·Έλμ unkwown νμ μ λ³μλ₯Ό λ€λ₯Έ κ³³μμ μ¬μ©νλ €λ©΄ νμ λ¨μΈμ ν΅ν΄ νμ 보μ₯μ νμ¬ μ¬μ©ν μ μλ€.
μμ aliasλ₯Ό ν΅ν λͺ μμ ννμ΄ νμ λ¨μΈ μ΄λ€.
λ λ€λ₯Έ λ°©λ²μΌλ‘λ typeof λ₯Ό μ¬μ©νλ λ°©λ²μ΄ μλ€.
let unknownValue: unknown = 'λλ λ¬Έμμ΄';
let stringValue: string;
if (typeof unknownValue === 'string') {
stringValue = unknownValue;
console.log('unknownValueλ λ¬Έμμ΄');
} else {
console.log('unknownValueλ λ¬Έμμ΄μ΄ μλλ€');
}
typeof ν€μλλ₯Ό μ΄μ©ν΄μ 미리 νμ
μ 체ν¬ν ν,
unknown νμ
μ λ³μλ₯Ό string νμ
μ λ³μμ ν λΉν μ μλ€.
unknown μ νκ³
unknown νμ μ΄ κ·Έλλ§ μ¬ν λΉμ ν λ νμ 체ν¬κ° λμ΄μ μμ ν¨μ 보μ₯ν μ μλ€.
λ€λ§, unknown νμ λ κ²°κ΅ μ¬ν λΉμ΄ μΌμ΄λμ§ μμΌλ©΄ νμ μμ μ±μ΄ 보μ₯μ΄ λμ§ μλ λ€λ νΉμ§μ΄ μ‘΄μ¬νλ€.
union
μ΄λ΄ λλ₯Ό μν΄ union νμ μ΄λΌλ κ²μ΄ μ¬μ©λ©λλ€.
union μ μ¬λ¬ νμ μ€ νλλ₯Ό κ°μ§ μ μλ λ³μλ₯Ό μ μΈν λ μ¬μ©μ΄ λλ€.
unionμ < | > μ°μ°μλ₯Ό μ¬μ©νμ¬ μ¬λ¬ νμ μ κ²°ν©νμ¬ ννν μκ° μλ€.
union μ¬μ© μ¬λ‘
type StringOrNumber = string | number; // μνλ€λ©΄ | boolean μ΄λ°μμΌλ‘ νμ
μΆκ°κ° κ°λ₯νλ€.
function processValue(value: StringOrNumber) {
if (typeof value === 'string') {
// valueλ μ¬κΈ°μ string νμ
μΌλ‘ κ°μ£Ό
console.log('String value:', value);
} else if (typeof value === 'number') {
// valueλ μ¬κΈ°μ number νμ
μΌλ‘ κ°μ£Ό
console.log('Number value:', value);
}
}
processValue('Hello');
processValue(42);
- TypeScriptλ₯Ό μ°λ©΄μ μ¬λ¬ νμ μ νλμ λ³μλ‘ ν΄κ²°νκ² λ€λ μκ°μ κ°κΈμ μ§μνλ κ²μ΄ μ’λ€.
- μ΄λ° μ¬μν μ΅κ΄λ€μ΄ μ½λμ μμ μ±μ λμ΄κ³ μ μ§ λ³΄μμ±μ κ°μ ν μ μλ€λ μκ°μ΄ λ λ€.
#ts #union #any #unknown #