목차
TypeScript 기본 문법
타입선언
let foo1 = 10; // foo는 타입이 number가 된다. 타입은 암묵적으로 작성.
let foo2: number = 10; // 타입을 명시적으로 작성.
foo = false; // 다른 타입을 넣으니 에러가 발생한다.
- JS도 새로운 기능이 추가되고 있는데, 명시적으로 작성하는 방법으로 개발 되고 있다.
- 암묵적인 코드는 좋지 않으며 명시적인 방법으로 이전되고 있다.
Type Alias와 변수 선언
// 일반 변수 설정
let age: number = 10;
let weight: number = 72;
// Type Alias를 통한 변수 설정
type Age = number;
type Weight = number;
let age: Age = 10;
let weight: Weight = 72;
// 객체 Type 설정
type Foo1 = {
age: number;
name: string;
}
// 객체 Type && Type Alias 선언
type Foo2 = {
age: Age;
weight: Weight;
name: string;
}
// 객체 Type선언을 통한 변수 설정
const foo: Foo = {
age: 10,
weight: 72,
name: 'lim'
}
// Interface 선언
interface Bar {
age: Age;
name: string;
}
const foo: Bar = {
age: 10,
name: 'lim'
}
- Type Alias는 단순히 기본형 데이터를 다른 이름 사용하도록 해주는 것이다.
- 이를 통해서 코드의 가독성을 향상 시킬 수 있다.
-
Type 관련 코드는 컴파일 될 경우 모두 사라진다.
- TypeScript에는 컴파일 할 때만 남는 문법 요소와 컴파일 이후에도 남는 runtime 요소 두가지가 존재한다.
- 인터페이스, 제네릭, 타입 등이 컴파일에만 동작하는 문법요소이다.
-
Type Alias과 Interface중 어느것을 써야 할까.?
- 나중에 조금 더 자세하게 할 예정. 일단 쓰는법을 익혀두자.
React
create-react-app
-
리액트앱을 구성할 수 있는 가장 빠른 방법
# 그냥 JavaScript로 할 경우 다음 명령어로 react app을 만들 수 있다. npx create-react-app my-app # 다음 명령어로 타입스크립트로 셋팅된 react app을 만들 수 있다. npx create-react-app my-app --template typescript
-
CRA는 production용으로는 사용하지 않는 것이 좋다.
- CRA가 구성하지 않는 세팅을 추가하려고 하는게 굉장히 어렵다.
- 다양한 환경에 대한 대응이 어렵다.
- eject로 환경을 빼낼 순 있으나 헬게이트를 여는 느낌이다. ( 그냥 하지 말아라 )
- CRA는 학습용으로 쓰고 실제 개발 환경에서는 웹팩으로 구성해라.
트랜스파일러
- react 트랜스파일러는 babel이다. 링크에서 어떻게 트랜스파일링 되는지 확인할 수 있다.
import React from 'react';
function App() {
return (
<h1 id="header">Hello Tech</h1>
)
}
--> 트랜스파일링
"use strict";
var _react = _interopRequireDefault(require("react"));
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
function App() {
return /*#__PURE__*/_react.default.createElement("h1", {
id: "header"
}, "Hello Tech");
}
<h1>Hello Tech</h1>
는 JavaScript 문법이 아니다. 바벨이 이를createElement
형태로 바꿔주는 것이다.-
react component를 만들기 위해서는 react 패키지를 import 해야 한다.
import React from 'react'
간단한 리액트앱 작성해보기
-
CodeSandBox에 작성. 링크
- StrictMode는 개발 환경에서 에러, alert을 보여주기 위한 tag이다. Production Level에서는 동작하지 않는다. 한번 살펴보자.
- ReactDom.render는 처음 한번만 동작한다. 최상위에서 한번만 호출한다.
상태 관리
- 여러 component에서 공유해야 하는 전역 상태를 어떻게 관리할 것인가? 라는 관점에서 보는 것이다.
-
상태 관리에는 여러가 솔루션이 존재한다.
- flux
-
redux
- flux 아키텍처를 더 정형화하고 심플하게 만든 것이다.
- react 기본으로 들어가 있으며 굉장히 많이 쓰고 있다.
- 굉장히 간단하다. 간단해서 더 어렵게 느껴 질 수 있다.
-
mobx
- redux의 대체품이 아니다. 상태 관리의 패러다임이 다르다.
- mobx는 여러 형태로 사용 할 수 있다. 다양한 사용법, 아키텍처가 나올 수 있어서 개발자마다 이를 이용하는 방법이 다를 수 있다. redux는 간단한 형태여서 하나의 아키텍처로 통합할 수 있으나 mobx는 여러 방법이 있어서 통합하기 어렵다.
- 굉장히 유연하고 기능은 많으나 그만큼 실수할 여지가 많아질 수 있다.