Typescript Basics & Basic Types

TeasanΒ·2022λ…„ 9μ›” 1일
0

typescript

λͺ©λ‘ 보기
8/13
post-thumbnail

λͺ©μ°¨

  • Using Types
  • TypeScript Types vs JavaScript Types
  • Working with Numbers, Strings & Booleans
  • Object Type
  • μ€‘μ²©λœ 객체 νƒ€μž…
  • νŠœν”Œ μž‘μ—…ν•˜κΈ°

✧ Using Types

number

  • 숫자 νƒ€μž…

string

  • λ¬Έμžμ—΄ νƒ€μž…
  • string νƒ€μž…μ€ μž‘μ€ λ”°μ˜΄ν‘œ(''), 큰 λ”°μ˜΄ν‘œ(""), λ°±ν‹±(`) κ³Ό 같은 μ„Έ 가지 방법 쀑에 ν•˜λ‚˜λ‘œ μ •μ˜ν•  수 μžˆλ‹€.

λ°±ν‹±(`)을 μ‚¬μš©ν•˜μ—¬ 일뢀 데이터λ₯Ό λ™μ μœΌλ‘œ μ£Όμž…ν•  수 μžˆλŠ” 일반 λ¬Έμžμ—΄, 즉 ν…ν”Œλ¦Ώ λ¦¬ν„°λŸ΄μ„ μž‘μ„±ν•  수 μžˆλ‹€.

boolean

  • boolean νƒ€μž…
  • true/false 둜 λ‚˜λ‰˜λŠ” νƒ€μž…. μ΄λŠ” ν”„λ‘œκ·Έλž˜λ° 쀑에 특히 ifλ¬Έμ—μ„œ μž‘μ—…ν•  λ•Œ μ•„μ£Ό μ€‘μš”ν•œ 역할을 λ‹΄λ‹Ήν•œλ‹€. true/falseλŠ” μžλ°”μŠ€ν¬λ¦½νŠΈμ—μ„œ μ°Έ 같은 κ°’(truthy)κ³Ό 거짓 같은 κ°’(falsy)의 idλ₯Ό μ•Œ 수 있기 λ•Œλ¬Έμ— μ€‘μš”ν•˜λ‹€. 예λ₯Ό λ“€μ–΄, ifλ¬Έμ—μ„œ 숫자 0을 μ‚¬μš©ν•˜λ©΄ μ΄λŠ” 거짓(false)으둜 μ²˜λ¦¬λ˜μ–΄ 거짓 κ°’(falsy)이 λœλ‹€.

정리

  • νƒ€μž…μŠ€ν¬λ¦½νŠΈλŠ” 컴파일 ν•˜λŠ” λ™μ•ˆμ—λ§Œ μœ μš©ν•˜λ‹€. λΈŒλΌμš°μ €μ—λŠ” λ‚΄μž₯ νƒ€μž…μŠ€ν¬λ¦½νŠΈ 지원이 μ—†κΈ° λ•Œλ¬Έμ— λŸ°νƒ€μž„μ—μ„œ μžλ°”μŠ€ν¬λ¦½νŠΈκ°€ λ‹€λ₯Έ μ‹μœΌλ‘œ μž‘λ™ν•˜λ„λ‘ λ³€κ²½ν•˜μ§€ μ•ŠλŠ”λ‹€. νƒ€μž…μŠ€ν¬λ¦½νŠΈ μ½”λ“œλ₯Ό μžλ°”μŠ€ν¬λ¦½νŠΈλ‘œ μ»΄νŒŒμΌν•˜κΈ° μ „κΉŒμ§€ 개발 λ„μ€‘μ—λ§Œ μœ μš©ν•˜κ² μ§€λ§Œ μ΄λŠ” 좔가적인 단계와 μ˜¨μ „μ„± 검사λ₯Ό μΆ”κ°€ν•˜κΈ° λ•Œλ¬Έμ— μ•„μ£Ό μœ μš©ν•˜λ‹€. μΆ”κ°€ κΈ°λŠ₯을 톡해 μ‹€μˆ˜κ°€ μžˆλŠ” 경우(λ¬Έμžμ—΄μ΄μ–΄μ•Ό ν•˜λŠ”λ° μˆ«μžν˜•μ΄μ–΄μ•Ό ν•œλ‹€λ˜κ°€) 이λ₯Ό λ°”λ‘œ μˆ˜μ •ν•  수 μžˆλ‹€. 즉, νƒ€μž…μŠ€ν¬λ¦½νŠΈλŠ” λŸ°νƒ€μž„ μ½”λ“œλ₯Ό λ³€κ²½ν•˜μ§€ μ•ŠλŠ”λ‹€.

✧ TypeScript νƒ€μž… vs JavaScript νƒ€μž…

function add(n1: number, n2: number) {
  if (typeof n1 === "number" || typeof n2 === "number") {
    throw new Error("Incorrect Input");
  }
  return n1 + n2;
}

const number1 = "5";
const number2 = 2.6;

const result = add(number1, number2);
console.log(result);
  • μ—¬κΈ°μ„œ νƒ€μž…κ³Ό κ΄€λ ¨ν•˜μ—¬ μžλ°”μŠ€ν¬λ¦½νŠΈμ™€ νƒ€μž…μŠ€ν¬λ¦½νŠΈμ˜ 차이점을 확인할 수 μžˆλ‹€. μžλ°”μŠ€ν¬λ¦½νŠΈλŠ” 동적 νƒ€μž…μ΄λ‹€. μ΄λŠ” λ‚˜μ€‘μ— λ¬Έμžμ—΄μ„ ν• λ‹Ήν•  λ•Œ μ²˜μŒμ— μˆ«μžν˜•μ„ μž‘μ•„λ‘˜ 수 μžˆλŠ” λ³€μˆ˜κ°€ μžˆλ”λΌκ³  ν•˜λ”λΌλ„ μ „ν˜€ λ¬Έμ œκ°€ 될 게 μ—†λ‹€λŠ” μ˜λ―Έμ΄κΈ°λ„ ν•˜λ‹€. κ·Έλž˜μ„œ νŠΉμ • νƒ€μž…μ— μ˜μ‘΄ν•˜λŠ” μ½”λ“œκ°€ μžˆλŠ” 경우, λŸ°νƒ€μž„μ—μ„œ λ¬΄μ–Έκ°€μ˜ ν˜„μž¬μ˜ νƒ€μž…μ„ 확인할 수 있게 ν•΄μ£ΌλŠ” typeof μ—°μ‚°μžλ₯Ό μ‚¬μš©ν•˜λŠ” 것이닀. 반면 νƒ€μž…μŠ€ν¬λ¦½νŠΈλŠ” 정적 νƒ€μž…μœΌλ‘œ μ΄λŠ” λ³€μˆ˜μ™€ λ§€κ°œλ³€μˆ˜μ˜ νƒ€μž…μ„ 개발 도쀑에 μ •μ˜ν•œλ‹€λŠ” 것을 μ˜λ―Έν•œλ‹€. 즉 λŸ°νƒ€μž„ 쀑에 κ°‘μžκΈ° λ³€κ²½λ˜κ±°λ‚˜ ν•˜μ§€λŠ” μ•ŠλŠ” 것이닀. νƒ€μž…μŠ€ν¬λ¦½νŠΈκ°€ μžλ°”μŠ€ν¬λ¦½νŠΈλ‘œ 컴파일 λ˜μ–΄ λΈŒλΌμš°μ €μ—μ„œ κ΅¬λ™λ˜κΈ° λ•Œλ¬Έμ— μ΄λ‘ μ μœΌλ‘œλŠ” κ°€λŠ₯ν•  것 κ°™μ§€λ§Œ νƒ€μž…μŠ€ν¬λ¦½νŠΈλ₯Ό μ‚¬μš©ν•˜μ—¬ 숫자 νƒ€μž… λ³€μˆ˜λ₯Ό μž‘μ„±ν•œ λ’€ κ°‘μžκΈ° λ¬Έμžμ—΄μ„ μƒˆλ‘œ ν• λ‹Ήν•œλ‹€λ©΄ '개발 도쀑에' μ—λŸ¬κ°€ λ°œμƒν•˜λ―€λ‘œ μ–΄λ–€ νƒ€μž…μ„ λ³΄μœ ν•΄μ•Όν•˜λŠ”μ§€ μ—¬λΆ€λ₯Ό 보닀 λͺ…ν™•νžˆ ν•  수 밖에 없을 것이닀. 그리고 이것이 μžλ°”μŠ€ν¬λ¦½νŠΈμ™€ νƒ€μž…μŠ€ν¬λ¦½νŠΈμ˜ 차이점이닀. λ”°λΌμ„œ νƒ€μž…μŠ€ν¬λ¦½νŠΈλ₯Ό μ‚¬μš©ν•΄μ„œ μ΄λŸ¬ν•œ λ¬Έμ œλ“€μ„ 방지할 수 μžˆλ‹€λ©΄, μ•žμ„œ typeof μ—°μ‚°μžλ₯Ό μ‚¬μš©ν•˜λŠ” λ°©μ‹μœΌλ‘œ ν•΄κ²°ν•  ν•„μš”λŠ” μ—†λ‹€. 그리고 λŸ°νƒ€μž„ κ²€μ‚¬λŠ” νƒ€μž…μŠ€ν¬λ¦½νŠΈλ‘œ μˆ˜ν–‰ν•˜λŠ” 것보닀 μœ μ—°ν•˜κ±°λ‚˜ κ°•λ ₯ν•˜μ§€ μ•ŠκΈ° λ•Œλ¬Έμ΄λ‹€.

✧ 숫자 λ¬Έμžμ—΄ 및 λΆˆλ¦¬μ–Έ μž‘μ—…ν•˜κΈ°

const number1 = 5;
const number2 = 5.0;
  • λͺ¨λ“  μˆ«μžν˜•μ€ 기본적으둜 float μ‹€μˆ˜ν˜•μ΄λ‹€. μžλ°”μŠ€ν¬λ¦½νŠΈ 및 νƒ€μž…μŠ€ν¬λ¦½νŠΈμ—μ„œμ˜ 5와 5.0 λŠ” 차이가 μ—†λŠ” 것이닀. 본질적으둜 같은 μˆ«μžν˜•μ΄ λœλ‹€.
function add(n1: number, n2: number) {
  if (typeof n1 !== "number" || typeof n2 !== "number") {
    throw new Error("Incorrect input!");
  }

  return n1 + n2;
}

const number1 = 5;
const number2 = 2.8;

const result = add(number1, number2);
console.log(result); // 7.8
  • μ‚Όν•­μ—°μ‚°μžμ™€ if문을 μ‚¬μš©ν•˜λŠ” 것 λŒ€μ‹ , λ™μ μœΌλ‘œ μƒμ„±ν•΄μ„œ μ°Έ λ˜λŠ” 거짓 값을 가진 λ³€μˆ˜μ˜ μ΄ˆκΈ°κ°’μœΌλ‘œ ν• λ‹Ήν•  μˆ˜λ„ μžˆλ‹€.
function add(n1: number, n2: number, showResult: boolean) {
  const result = n1 + n2;
  if (showResult) {
    console.log(result);
  } else {
    return result;
  }
}

const number1 = 5; // 5.0
const number2 = 2.8;
const printResult = true;

add(number1, number2, printResult); // 7.8

✧ μ€‘μ²©λœ 객체 νƒ€μž…

λ¬Όλ‘  객체 νƒ€μž…μ€ 쀑첩 객체에 λŒ€ν•΄μ„œλ„ 생성할 수 μžˆλ‹€.
λ‹€μŒκ³Ό 같은 μžλ°”μŠ€ν¬λ¦½νŠΈ 객체가 μžˆλ‹€κ³  가정해보면,

const product = {
  id: "abc1",
  price: 12.99,
  tags: ["great-offer", "hot-and-new"],
  details: {
    title: "Red Carpet",
    description: "A great carpet - almost brand-new!",
  },
};

μ΄λŸ¬ν•œ 객체의 νƒ€μž…μ€ μ•„λž˜μ™€ κ°™λ‹€.

{
  id: string;
  price: number;
  tags: string[];
  details: {
    title: string;
    description: string;
  }
}

λ”°λΌμ„œ 객체 νƒ€μž… μ•ˆμ— 객체 νƒ€μž…μ΄ μžˆλ‹€κ³  말할 수 μžˆλ‹€.


✧ νŠœν”Œ μž‘μ—…ν•˜κΈ°

  • νŠœν”Œ νƒ€μž…μ€ μžλ°”μŠ€ν¬λ¦½νŠΈμ—λŠ” μ—†λŠ” νƒ€μž…μŠ€ν¬λ¦½νŠΈμ˜ νƒ€μž…μ΄λ‹€.
[1, 2];
  • μœ„μ˜ μ½”λ“œλ₯Ό 보면, 보톡은 배열이라고 생각할 것이닀. λ¬Όλ‘  νŠœν”Œμ€ 배열이 λ§žλ‹€. ν•˜μ§€λ§Œ 길이가 κ³ μ •λœ 배열을 μ˜λ―Έν•œλ‹€. 그리고 길이 뿐 μ•„λ‹ˆλΌ νƒ€μž…λ„ κ³ μ •λœλ‹€.
const person: {
  name: string,
  age: number,
  hobbies: string[],
  /*⚑️*/ role: [number, string] /*⚑️*/,
} = {
  name: "Maximilian",
  age: 30,
  hobbies: ["Sports", "Cooking"],
  /*⚑️*/ role: [2, "author"] /*⚑️*/,
};
  • role은 Tuple νƒ€μž…μ΄λ‹€. 그리고 person은 ν•œ κ°€μ§€μ˜ role만 κ°€μ§ˆ 수 있고 role은 λ‘κ°œμ˜ μš”μ†Œλ‘œλ§Œ κ΅¬μ„±λ˜μ–΄ 있기 λ•Œλ¬Έμ— 항상 두 개의 μš”μ†Œλ§Œ μ§€λ…€μ•Όλ§Œ ν•œλ‹€.

✦ 좜처


🚨 ν•΄λ‹Ή ν¬μŠ€νŒ…μ€ Udemy의 Typescript :κΈ°μ΄ˆλΆ€ν„° μ‹€μ „ν˜• ν”„λ‘œμ νŠΈκΉŒμ§€ with React + NodeJS κ°•μ˜λ₯Ό 베이슀둜 ν•œ κΈ°λ‘μž…λ‹ˆλ‹€.
✍🏻 κ°•μ˜ git repo λ°”λ‘œκ°€κΈ°

profile
일단 곡뢀가 '적성'에 λ§žλŠ” 개발자. κ·Όμ„±μžˆμŠ΅λ‹ˆλ‹€.

0개의 λŒ“κΈ€