any νμ
any νμ μ νμ μ€ν¬λ¦½νΈμμλ§ μ 곡λλ νΉλ³ν νμ μΌλ‘ νμ μ€ν¬λ¦½νΈμ νμ κ²μ¬λ₯Ό λ°μ§ μλ νμ μ΄λ€. νΉμ λ³μμ νμ μ νμ€ν λͺ¨λ₯Ό λ μ¬μ©ν μ μμΌλ μ§μνλ κ²μ΄ μ’λ€.
let anyVar = 10;
anyVar = "hello"; // β μ€λ₯ λ°μ!
μΌλ°μ μΌλ‘ μμ κ°μ΄ μ«μ 10μΌλ‘ μ΄κΈ°νν λ³μμ λ¬Έμμ΄μ μ¬ν λΉνλ €κ³ νλ κ²½μ° μ€λ₯κ° λ°μνλ€. μ΄κΈ°νλ κ°μ λ°λΌ μ΄λ―Έ `anyVar` λ³μκ° number νμ μΌλ‘ μΆλ‘ λμκΈ° λλ¬Έμ΄λ€.
let anyVar: any = 10;
anyVar = "hello";
anyVar = true;
anyVar = {};
anyVar = () => {};
anyVar.toUpperCase();
anyVar.toFixed();
any νμ μ μ¬μ©νλ©΄ ν΄λΉ λ³μμ λ§κ·Έλλ‘ μ΄λ€ κ°μ΄λ λ£μ μ μλ€. λν μ΄λ€ νμ μ λ©μλλ μμ λ‘κ² νΈμΆν μ μλ€.
let anyVar: any = 10;
anyVar = "hello";
let num: number = 10;
num = anyVar;
μμ κ°μ΄ λ³μμ νμ κ³Ό μκ΄ μμ΄ λ¬΄μ‘°κ±΄ λ€λ₯Έ λ³μμ any νμ μ κ°μ ν λΉν μ μλ€.
let anyVar: any = 10;
anyVar = true;
anyVar.toUpperCase();
anyVar.toFixed();
μμ κ°μ μ½λλ νμ κ²μ¬λ₯Ό λ°μ§ μκΈ° λλ¬Έμ μ€ν μ μλ μ€λ₯κ° λ°μνμ§ μμ§λ§, μ½λλ₯Ό μ€νν΄λ³΄λ©΄ λΉμ°νκ²λ λ°νμ μ€λ₯κ° λ°μνλ€. λ°λΌμ any νμ μ μ¬μ©νλ©΄ νμ κ²μ¬λ₯Ό λ°μ§ μμμ μΈμ μ΄λ»κ² μλ¬κ° λ μ§ λͺ¨λ₯΄λ μνν μ½λλ₯Ό μμ±νκ²λλ κ²μ΄λ―λ‘ μ§μνλ κ²μ΄ μ’λ€.
any νμ μ μ΄μ© μ μμ΄ μ¬μ©ν΄μΌνλ κ²½μ°κ° μμκΉ?
any νμ μ μ΄μ© μ μλ κ²½μ°λ₯Ό μ μΈνκ³ μ¬μ©νμ§ λ§λΌκ³ νλλ° κ·Έλ° μ΄μ© μ μλ κ²½μ°μ λκ° μμ μ§ μκ°ν΄λ³΄μ. νλ‘μ νΈλ₯Ό μ§ννλ€λ³΄λ©΄ μ’ μ’ μκΈΈ μ μλ κ²½μ°λ€μ΄λ€.
β μΈλΆ λΌμ΄λΈλ¬λ¦¬ νΈνμ± λ¬Έμ
μΈλΆ μλ°μ€ν¬λ¦½νΈ λΌμ΄λΈλ¬λ¦¬λ₯Ό μ¬μ©ν λ ν΄λΉ λΌμ΄λΈλ¬λ¦¬μ νμ μ μκ° μκ±°λ λΆμμ ν κ²½μ° any νμ μ μ¬μ©ν΄μ μΌμμ μΌλ‘ λ¬Έμ λ₯Ό νΌν μ μλ€. κ·Έλ¬λ μ§μ νμ μ μ νμΌμ μμ±ν΄μ£Όλ κ²μ΄ μμ νλ€.
import { someOldLibrary } from 'some-old-library'; const result: any = someOldLibrary();β
β‘ λμ λ°μ΄ν° μ²λ¦¬λ νμ μΆλ‘ μ΄ μ΄λ €μ΄ μν©
μλ²λ‘λΆν° λ°μ΄ν°λ₯Ό λ°μμ¬ λ API μλ΅μ΄ λμ μΌλ‘ λ³ν΄μ νμ μ μ ννκ² μ μνκΈ° μ΄λ €μ΄ κ²½μ°, λ€μν ν¨μλ κ°μ²΄κ° μΈμλ‘ λ€μ΄μ€λ μ½λ°± ν¨μ λ± νμ μ μκΈ° μ΄λ €μΈ λ anyλ₯Ό μ¬μ©ν μ μλ€.
const response: any = await fetchDataFromAPI(); const parsedData = JSON.parse(response); function processData(data: any) { console.log(data); }β
unknown νμ
unknown νμ μ λ³μλ any νμ κ³Ό λ§μ°¬κ°μ§λ‘ μ΄λ€ νμ μ κ°μ΄λ μ μ₯ν μ μμ§λ§ any νμ λ³΄λ€ μ’ λ μμ νκ² μ¬μ©ν μ μλ€.
let unknownVar: unknown;
unknownVar = "";
unknownVar = 1;
unknownVar = () => {};
unknown νμ μ΄ any νμ λ³΄λ€ μμ ν μ΄μ λ β μ΄λ€ λ©μλ νΈμΆμ΄λ μ°μ°λ λΆκ°λ₯νκ³ , β‘μ΄λ€ νμ μ λ³μμλ ν λΉνμ§ λͺ»νκΈ° λλ¬Έμ΄λ€. λ°λΌμ unknown νμ μ λ³μλ μ€λ‘μ§ κ°μ μ μ₯νλ μν λ‘λ§ μ¬μ©ν μ μλ€.
let unknownVar: unknown;
(...)
unknownVar.toUpperCase(); // β μ€λ₯ λ°μ!
unknownVar * 2 // β μ€λ₯ λ°μ!
let unknownVar: unknown;
unknownVar = "hello";
let num: number = 10;
num = unknownVar; // β μ€λ₯ λ°μ!
λ§μ½ unknown νμ μΌλ‘ μ μν λ³μλ₯Ό νΉμ ν νμ μ κ°μΌλ‘ κ°μ£Όνκ³ μ°μ°μ΄λ λ©μλ νΈμΆμ νκ³ μΆλ€λ©΄, νμ μ’νκΈ°λ₯Ό μ¬μ©ν μ μλ€. νμ μ€ν¬λ¦½νΈμμλ 쑰건문μ μ΄μ©ν΄ μ΄λ ν κ°μ΄ νΉμ νμ μμ 보μ₯ν μ μκ² λλ©΄ ν΄λΉ κ°μ νμ μ΄ μλμΌλ‘ λ°λκ² λλ©° μ΄λ₯Ό νμ μ’νκΈ°λΌκ³ νλ€.
let unknownVar: unknown;
if (typeof unknownVar === "number") {
num = unknownVar;
num.toFixed();
}
void νμ
void νμ μ μλ¬΄λ° κ°λ μμμ μλ―Ένλ νμ μ΄λ€.
function func(): void {
console.log("hello");
}
μμ κ°μ΄ μλ¬΄λ° κ°μ λ°ννμ§ μλ ν¨μμ λ°νκ° νμ μ μ§μ ν΄μΌν λ void νμ μ μ¬μ©νλ€.
λν void νμ μ λ³μλ μ μΈν μ μλ€. void νμ μ λ³μμλ μ€λ‘μ§ undefined νμ μ κ°λ§ ν λΉ κ°λ₯νλ€. λ§μ½ tsconfig.jsonμμ `strictNullCheck` μ΅μ μ `false`λ‘ μ€μ ν κ²½μ°μλ null κ°λ λ΄μ μ μλ€.
let a: void;
// a = 1; β
// a = "hello"; β
// a = {}; β
// a = null; β
a = undefined;
TypeScript 5.0 λ²μ μ΄μ μ κ²½μ°
μ¬μ€ κ°μ λ°ννμ§ μλ ν¨μμ λ°νκ° νμ μΌλ‘ undefinedμ μκ°ν΄λ³Ό μ μλ€. λ¬Όλ‘ κ·Έκ²λ κ°λ₯νλ€. νμ§λ§ μ΄λ TypeScript λ²μ μ΄ 5.1 λ²μ μΌλ‘ μ λ°μ΄νΈλλ©΄μ λ°μλ λ΄μ©μ΄λ€.
5.0 λ²μ (νΉμ κ·Έ μλ λ²μ )μμλ undefined νμ μ λ°νκ° νμ μΌλ‘ μ¬μ©νλ€λ©΄ 무쑰건 λͺ μμ μΌλ‘ undefinedλ₯Ό λ°νν΄μΌνλ€. λν null νμ μ λ°νκ° νμ μΌλ‘ μ¬μ©ν κ²½μ° λ²μ μ κ΄κ³μμ΄ λ¬΄μ‘°κ±΄ λͺ μμ μΌλ‘ nullμ λ°νν΄μ£Όμ΄μΌ νλ€.
function func2(): undefined { (...) return; // return undefined;μ κ°μ } function func3(): null { (...) return null; }β
never νμ
never νμ μ λΆκ°λ₯μ μλ―Ένλ νμ μ΄λ€.
function func4():never {
while (true) {}
}
function func5():never {
throw new Error();
}
μμ μ½λμμ `func4` ν¨μλ 무ν 루νλ₯Ό λκ³ μκΈ° λλ¬Έμ μ΄λ ν κ°λ λ°νν μ μλ€. `func5`λ μλμ μΌλ‘ μ€λ₯λ₯Ό λ°μμν€κ³ μκΈ° λλ¬Έμ κ°μ λ°νν μ μλ€. μ΄λ¬ν κ²½μ° ν΄λΉ ν¨μλ€μ κ°μ λ°ννλ κ²μ΄ 'λΆκ°λ₯'νλ€. λ°λΌμ λ°νκ° νμ μΌλ‘ neverλ₯Ό μ¬μ©ν μ μλ€.
λ³μμ νμ μ neverλ‘ μ μνλ©΄ anyλ₯Ό ν¬ν¨ν κ·Έ μ΄λ€ νμ μ κ°λ λ³μμ λ΄μ μ μκ² λλ€.
let anyVar: any;
let a: never;
// a = anyVar; β
// a = null; β
// a = undefined; β
μ°Έκ³
λ³Έ ν¬μ€νΈλ μ΄μ νλμ 'ν μ ν¬κΈ°λ‘ μλΌλ¨Ήλ νμ μ€ν¬λ¦½νΈ(TypeScript)' κ°μλ₯Ό μκ°νλ©° μμ±νμμ΅λλ€.
ν μ ν¬κΈ°λ‘ μλΌλ¨Ήλ νμ μ€ν¬λ¦½νΈ(TypeScript) κ°μ | μ΄μ ν Winterlood - μΈνλ°
μ΄μ ν Winterlood | , νλ‘ νΈμλμ νΌν μ μλ λμΈ νμ μ€ν¬λ¦½νΈ,μ΄μ λ μ λλ‘ μ 볡ν λκ° μμ΅λλ€! π [μ¬μ§]μΈνμ½ 2023 'νμ μ€ν¬λ¦½νΈλ μ κ·Έλ΄κΉ?' λ°νμμ κ°μμ λλ€. π§ λ°°μ
www.inflearn.com