μ λμΈ : κ°μ νμ©λ νμ μ λ κ° μ΄μμ κ°λ₯ν νμ μΌλ‘ νμ₯νλ κ²
λ΄λ‘μ : κ°μ νμ©λ νμ μ΄ νλ μ΄μμ κ°λ₯ν νμ μ΄ λμ§ μλλ‘ μ’νλ κ²
=> μ½λ μ 보μ μ κ°ν μΆλ‘
μ¬λ¬ κ°μ νμ μ κ°μ§ μ μμ λ
μ½κ² λ§ν΄μ μ΄κ±° μλ μ κ±°
κ°μ΄ μ λμΈ νμ μΌ λ, μ λμΈμΌλ‘ μ μΈν λͺ¨λ νμ μ μ‘΄μ¬νλ λ©€λ² μμ±μλ§ μ κ·Όν μ μλ€.
ex) λ€μ μ½λμμ physicist
λ string | number
νμ
μ΄λ―λ‘ λ κ°μ νμ
μ λͺ¨λ μ‘΄μ¬νλ toString()
λ©μλλ μ¬μ©ν μ μμ§λ§ toUpperCase()
λ string νμ
μλ§ μ‘΄μ¬νκΈ° λλ¬Έμ μ¬μ©ν μ μλ€.
let physicist = Math.random() > 0.5
? "Marie Curie"
: 84; // string | number
physicist.toString(); // ok
physicist.toUpperCase(); // error!
μ΄λ₯Ό ν΄κ²°νλ €λ©΄ μ½λμμ κ°μ΄ λ³΄λ€ κ΅¬μ²΄μ μΈ νμ μ€ νλλΌλ κ²μ TSμκ² μ리λ λ΄λ‘μμ΄ νμνλ€.
κ°μ΄ μ μ, μ μΈ νΉμ μ΄μ μ μ μΆλ κ²λ³΄λ€ λ ꡬ체μ μΈ νμ μμ μ½λμμ μ μΆνλ κ²μ΄λ€.
νμ μ μ’νλ λ° μ¬μ©ν μ μλ λ Όλ¦¬μ κ²μ¬λ₯Ό νμ κ°λλΌκ³ νλ€.
λ³μμ μ§μ κ°μ ν λΉνλ©΄ TSλ λ³μμ νμ μ ν λΉλ κ°μ΄ νμ μΌλ‘ μ’νλ€.
let person: number | string;
person = "MinwooP";
person.toUpperCase(); // ok
let person = Math.random() > 0.5
? "MinwooP"
: 51;
if(person === "MinwooP"){
person.toUpperCase(); // ok => stringμΌλ‘ μ’νμ‘κΈ° λλ¬Έ
}
person.toUpperCase(); // error
let person = Math.random() > 0.5
? "MinwooP"
: 51;
if(typeof person === string){
person.toUpperCase(); // ok => stringμΌλ‘ μ’νμ‘κΈ° λλ¬Έ
}
person.toUpperCase(); // error
const philosopher = "MinwooP";
μ λ³μμ νμ
μ, string
νμ
μ΄μ§λ§ λ¨μ§ string νμ
μ΄ μλ κΈ°μ μ μΌλ‘ λ ꡬ체μ μΈ "MinwooP"
μ΄λ€.
λ³μλ₯Ό constλ‘ μ μΈνκ³ μ§μ 리ν°λ΄ κ°μ ν λΉνλ©΄ TSλ ν΄λΉ λ³μλ₯Ό ν λΉλ 리ν°λ΄ κ°μΌλ‘ μ μΆνλ€.
const
λ‘ μ μΈλμ΄μμΌλ λ³κ²½μ΄ λΆκ°λ₯νλ―λ‘ λ¦¬ν°λ΄ κ°μΌλ‘ μ μΆ !
let philosopher = "MinwooP";
κ·ΈλΌ μ΄λ κ² letμΌλ‘ μ μΈνλ©΄ λ³κ²½κ°λ₯νλ string νμ μ΄κ³
const philosopher = "MinwooP";
constλ‘ μ μΈνλ©΄ 리ν°λ΄ νμ
리ν°λ΄ νμ μ μ λμΈ νμ μ λν μ΄μ μμλ μ¬μ©λ¨
let lifespan: number | "ongoing" | "uncertain"
TS μ»΄νμΌλ¬ μ΅μ
μ€, strictNullChecks
λ₯Ό λΉνμ±ννλ©΄, μ½λμ λͺ¨λ νμ
μ | null | undefined
λ₯Ό μΆκ°ν΄μΌ λͺ¨λ λ³μκ° null λλ undefinedλ₯Ό ν λΉν μ μλ€.
strictNullChecks
λ₯Ό νμ±νν κ²½μ°, string νμ
μΈ valueμ nullμ ν λΉνλ©΄ νμ
μ€λ₯κ° λ°μν©λλ€.
stringNullChecksλ₯Ό λΉνμ±νν΄λ, 무쑰건 nullμ ν λΉν μ μλκ² μλλΌ νμ μ
| null | undefined
λ₯Ό μΆκ°ν΄μΌ μ΄λ₯Ό ν λΉν μ μλ κ² ?
false, 0, "", null, undefined, NaN μ²λΌ falsyλ‘ μ μλ κ°μ μ μΈν λͺ¨λ κ°μ λͺ¨λ μ°Έμ΄λ€.
μ¬μ¬μ©νλ νμ μ λ μ¬μ΄ μ΄λ¦μ ν λΉ
type RawData = boolean | number | string ;
let rawDataFirst: RawData;
let rawDataSecond: RawData | null | undefined;
μ΄λ¬ν νμ λ³μΉμ νμ μ λν μ΄μ μ²λΌ jsλ‘ μ»΄νμΌλμ§ μλλ€. ts νμ μμ€ν μλ§ μ‘΄μ¬νλ κ²
=>
λ°λΌμ νμ λ³μΉμ λ°νμ μ½λμμ μ°Έμ‘°ν μ μμ
type someType = string | undefined; console.log(SomeType); // Error