프로그래머스 풀스택 43
posted on 28 Oct 2024 under category programmers in series programmers
프론트엔드 기초: React + TypeScript(6)
💫 타입스크립트 란?
타입스크립트 = 자바스크립트 + 타입체크
타입스크립트는 또한 컴파일 타임 시 오류 체크함
TS 👉 웹브라우저 X (해석 불가능)
TS 👉 JS 👉 웹브라우저 (컴파일을 통해 해석ok)
TS에서 JS로 변환하는 컴파일 과정이 필요
💫 타입스크립트 실행 환경
설치해야 할 VSCode 확장프로그램들(Extensions)
그리고 타입스크립트는 node.js가 깔려있어야 실행가능
npm install -g typescript
💫 첫번째 프로젝트
타입스크립트는 컴파일 단계를 거쳐야하므로 실행할 때 터미널에서
tsc app.ts
node app.js
tsc --init
tsc -w app.ts
💫 데이터 타입과 추론
데이터 타입이 중요한 이유!
타입 추론(Type Inference) 기능
let age = 30;
데이터 타입의 종류
💫 타임스크립트 타입 명시
let x : string = "나는 문자열이야";
ts파일에서 타입을 명시해도 js파일에서는 변경이 안됨
// 변수의 데이터 타입 명시
let stdId : number = 1111;
let stdName : string = 'kim';
let age : number = 25;
let gender : string = 'female';
let course : string = 'Typescript';
let completed : boolean = false;
// 함수의 데이터 타입 명시(매개변수, 리턴타입)
function Plus(a : number, b : number){
return a + b;
}
function Plus(a : number, b : number) : void{
// return a + b;
}
function getInfo(id : number) : {
stdId : number;
stdName : string;
age : number;
gender : string;
course : string;
completed : boolean;
}
💫 타입스크립트 인터페이스
✨사용자가 정의한 타입!!!✨
interface Student{
stdId : number;
stdName : string;
age : number;
gender : string;
course : string;
completed : boolean;
}
age? : number;
-> 이런식으로 ?을 사용해 선택적 property로 만들어줌function Plus(a : number, b? : number) : number{
return a + b;
}
함수의 매개변수도 선택적 매개변수로 만들 수 있음
interface를 통해 type으로 정해서 재사용하는 게 코드의 능률성을 높임!
setName(name : string) : void;
== setName : (name : string) => void;
interface는 class에 구현을 해서 사용함
A implements B
: B라는 인터페이스를 A라는 클래스에서 구현
class 끼리의 extends(확장)와 다른 개념으로 implements(구현)을 통해 상속함
그 뒤에 오버라이딩(overriding)을 해줌
A extends B
: B라는 클래스를 A라는 클래스가 상속
필요한 경우 오버라이딩을 통해 메소드 재정의 가능
extends : 기존 클래스의 확장. 즉, 상위 클래스의 모든 속성과 메서드를 물려받아서 재사용
implements : 인터페이스의 구현. 인터페이스는 메서드의 형식만 정의하고
이를 구현하는 클래스는 인터페이스에 정의된 메서드들을 반드시 구현해야 함
오버라이딩(Overriding)
class MyStudent implements Student{
stdId = 91011;
stdName = 'choi';
age = 30;
gender = 'male';
course = 'node.js';
completed = true;
setName(name : string) : void{
this.stdName = name;
console.log('이름 설정 : ' + this.stdName);
} // 재정의한 메소드(오버라이딩)
};
💫 열거형
값에 대해 안정적인 입력을 보장하기 위해 사용함
열거형
enum
: 사용자 정의 타입
enum GenderType{
Male,
Female
};
var GenderType;
(function (GenderType) {
GenderType[GenderType["Male"] = 0] = "Male";
GenderType[GenderType["Female"] = 1] = "Female";
})(GenderType || (GenderType = {}));
;
문자열 열거형
enum GenderType{
Male = 'male',
Female = 'female',
GenderNeutral = 'neutral'
};
var GenderType;
(function (GenderType) {
GenderType["Male"] = "male";
GenderType["Female"] = "female";
GenderType["GenderNeutral"] = "neutral";
})(GenderType || (GenderType = {}));
;
Y 일을 통해 명확히 알게 되었거나 이해한 부분(한 일)에 대해 정리 :
타입스크립트, 타입스크립트 인터페이스, 열거 등
W 배운 점과 시사점 :
interface는 class에 구현을 해서 사용함
A implements B
: B라는 인터페이스를 A라는 클래스에서 구현
class 끼리의 extends(확장)와 다른 개념으로 implements(구현)을 통해 상속함
그 뒤에 오버라이딩(overriding)을 해줌
A extends B
: B라는 클래스를 A라는 클래스가 상속
필요한 경우 오버라이딩을 통해 메소드 재정의 가능
extends : 기존 클래스의 확장. 즉, 상위 클래스의 모든 속성과 메서드를 물려받아서 재사용
implements : 인터페이스의 구현. 인터페이스는 메서드의 형식만 정의하고
이를 구현하는 클래스는 인터페이스에 정의된 메서드들을 반드시 구현해야 함
오버라이딩(Overriding)
T 응용하여 배운 것을 어디에 어떻게 적용할지:
타입스크립트 기초를 통해 프로그램의 안전성을 높이는 코드를 짤 수 있게 됨!