새싹 프론트엔드

새싹 프론트엔드 실무 과정 9주차 TypeScript

튼튼한간 2022. 12. 14. 12:04
  • 9주차 수요일

1. TypeScript

2. TypeScript 함수

 

 

Type이 필요한 이유

- 개발자는 age 변수에 숫자 값이 저장되길 원함

- 사용자는 age 변수에 숫자 값이 저장되는지 모름

- 숫자 값을 저장하는 변수에 문자열을 저장함

 

 

특징

- 변수 값에 데이터 타입 지정 가능(예측 가능, 디버깅 편리)

- 객체지향 프로그래밍 가능(클래스 기능 제공)

 

 

동작 과정

기존에는 별도의 변환 과정 필요❌

타입스크립트는 자바스크립트로 변환을 시켜줘야함

*컴파일 : 특정 언어의 코드를 다른 언어로 바꿔주는 과정

 


TypeScript 문법

유형 자바스크립트 타입 타입스크립트 타입
숫자 타입 Number number
불리언 타입 Boolean boolean
문자열 타입 String string
객체 타입 Object object

 

변수 선언 방법

- let 키워드

let 변수이름

let 변수이름 = 초기값

 

- const 키워드

const 변수이름 = 초기값

 

 

타입 주석(type annotation)

let 변수이름: 타입

let 변수이름: 타입 = 초기값

const 변수이름: 타입 = 초기값

 

 

 

 

 

기존의 자바스크립트면 에러 ❌

 

달아준 타입과 일치하지 않아, 오류 지렁이!

〰〰〰〰

 

 

 

 

 

 

 

 

 

 

타입 추론(type inference)

 

any 타입 : 값의 타입과 무관하게 어떤 종류의 값도 저장할 수 있음

let a: any = 0;

  a = "hello";
  a = true;
  a = {};

➡ 오류 안남! 하지만 추천은 ❌

 

 

union 타입 : 하나의 변수에 여러 개의 타입을 지정할 수 있음

 

 

 

타입 가드(Type Guard)

- union 타입을 사용할 경우, 자바스크립트의 typeof 연산자를 이용하여 코드 검증을 수행하는 것을 의미

- typeof 연산자 : 변수의 데이터 타입을 반환하는 연산자

 

 

 

오류 발생

 

 

 

 

 

 

수정

 

 

 

 

 

 

 

 

 

 

 

 

 

타입 별칭(Type Aliases)

- 기존에 존재하는 복잡한 타입을 저장하여 새로운 타입으로 생성하는 기능

➡ TypeAliases.tsx
 
const TypeAliases = () => {
  let people: {
    name: string;
    age: number;
  };

  type personType = {
    name: string;
    age: number;
  };
  return <div></div>;
};

 

수정

const TypeAliases = () => {
  type personType = {
    name: string;
    age: number;
  };
  let people1: personType;
  let people2: personType;

별칭 쵝오~😊

 

 

열거형(Enum)

- 서로 연관된 아이템들을 함께 묶어서 표현하는 자료형

ex) 요일, 계절, 성별

 
enum GenderType {
    Male,
    Female,
  }

  let person: {
    name: string;
    age: number;
    gender: GenderType;
  };

  person = {
    name: "gan",
    age: 20,
    gender: GenderType.FeMale,
  };

 

 

let person: {
    name: string;
    age: number;
    gender: "Male" | "Female";
  };

  person = {
    name: "gan",
    age: 20,
    gender: "Female",
  };

 

템플릿 문자열

`${변수이름}`

 

 

 

 

함수

 

함수 선언문

 

 

 

const App = () => {
  function add(a: number, b: number): number {
    return a + b;
  }
  let result = add(1, 2);
  console.log(result);
  return <div></div>;
};

결과는 3!

 

 

반환값이 문자열 타입인 함수

function add(a: string, b: string): string {
    return a + b;
  }

  let result = add("Hello", "gan"); // 결과 Hellogan

  console.log(result);
 

반환값이 문자열 배열 타입인 함수

const App = () => {
  function add(a: string, b: string): string[] {
    return [a + b];
  }

  let result = add("Hello", "gan"); // 결과 ['Hellogan']

  console.log(result);
  return <div></div>;
};
 

반환값이 없는 함

const App = () => {
  function add(a: string, b: string): void {
    console.log(a, b);
  }

  add("Hello", "gan");   // 결과 Hello gan

* void 타입 : 아무것도 반환하지 않는 함수의 반환 값으로만 사용되는 타입

 

 

선택적 매개변수

- 필수 매개변수가 아닌 경우

- 매개변수 이름 뒤에 물음표(?) 기호를 붙임

 

 

 function add(a: string, b: string): void {
    console.log(a, b);
  }

  add("Hello");
➡ 에러 발생

 

 function add(a: string, b?: string): void {
    console.log(a, b);
  }

  add("Hello"); // 정상 실행
 

주의사항 ⭐ 

 

 

 function setUser(
    id: string,
    name: string,
    age?: number,
    address?: string
  ): void {
    console.log(`ID:${id}`);
    console.log(`NAME:${name}`);
    console.log(`AGE:${age}`);
    console.log(`ADDRESS:${address}`);
    console.log(`------------------`);
  }

  // setUser("admin");  에러발생
  setUser("admin", "gan");
  setUser("admin", "gan", 20);
  setUser("admin", "gan", 20, "seoul");

 

 

기본 매개변수

function setUser(
    id: string,
    name: string,
    age: number = 20,
    address: string = "seoul"
  ): void {
    console.log(`ID:${id}`);
    console.log(`NAME:${name}`);
    console.log(`AGE:${age}`);
    console.log(`ADDRESS:${address}`);
    console.log(`------------------`);
  }

  setUser("admin", "gan");
  setUser("admin", "gan", 30);
  setUser("admin", "gan", 40, "jeju");

 

 

 

 

 


새싹DT 기업연계형 프론트엔드 실무 프로젝트 과정 9주차 블로그 포스팅