πŸͺ„ λŸ¬λ‹ νƒ€μž…μŠ€ν¬λ¦½νŠΈ CH3 - μœ λ‹ˆμ–Έκ³Ό λ¦¬ν„°λŸ΄

λ°•λ―Όμš°Β·2023λ…„ 10μ›” 23일
0

πŸͺ„ TypeScript

λͺ©λ‘ 보기
2/4
post-thumbnail
  • μœ λ‹ˆμ–Έ : 값에 ν—ˆμš©λœ νƒ€μž…μ„ 두 개 μ΄μƒμ˜ κ°€λŠ₯ν•œ νƒ€μž…μœΌλ‘œ ν™•μž₯ν•˜λŠ” 것

  • λ‚΄λ‘œμž‰ : 값에 ν—ˆμš©λœ νƒ€μž…μ΄ ν•˜λ‚˜ μ΄μƒμ˜ κ°€λŠ₯ν•œ νƒ€μž…μ΄ λ˜μ§€ μ•Šλ„λ‘ μ’νžˆλŠ” 것

=> μ½”λ“œ 정보에 μž…κ°ν•œ μΆ”λ‘ 


πŸ“Œ μœ λ‹ˆμ–Έ

  • μ—¬λŸ¬ 개의 νƒ€μž…μ„ κ°€μ§ˆ 수 μžˆμ„ λ•Œ

    μ‰½κ²Œ λ§ν•΄μ„œ 이거 μ•„λ‹˜ μ €κ±°

값이 μœ λ‹ˆμ–Έ νƒ€μž…μΌ λ•Œ, μœ λ‹ˆμ–ΈμœΌλ‘œ μ„ μ–Έν•œ λͺ¨λ“  νƒ€μž…μ— μ‘΄μž¬ν•˜λŠ” 멀버 μ†μ„±μ—λ§Œ μ ‘κ·Όν•  수 μžˆλ‹€.

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

ifλ¬Έ 쑰건 검사λ₯Ό ν†΅ν•œ λ‚΄λ‘œμž‰

let person = Math.random() > 0.5
	? "MinwooP"
	: 51;

if(person === "MinwooP"){
    person.toUpperCase(); // ok => string으둜 μ’ν˜€μ‘ŒκΈ° λ•Œλ¬Έ
}

person.toUpperCase(); // error

typeof 검사λ₯Ό ν†΅ν•œ λ‚΄λ‘œμž‰

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"

πŸ“Œ μ—„κ²©ν•œ null 검사

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
profile
κΎΈμ€€νžˆ, 깊게

0개의 λŒ“κΈ€