1. Promise에 대하여

const p1 = () => new Promise((resolve) => {
	setTimeout(() => {
		console.log('@4초 완료');
		resolve('4초 작업 완료');
	}, 4000);
});
const p2 = () => new Promise((resolve) => {
	setTimeout(() => {
		console.log('@2초 완료');
		resolve('2초 작업 완료');
	}, 2000);
});

// 1. 병렬 작업
Promise.all([p1, p2]);

// 2. 선후행 작업
p1().then(()=> p2()});

2. 예제로 확인하는 React, Redux, Saga, typeScript

// containers - index.ts
export * from "./OrderStatus";
export * from "./MonitorController";
export * from "./Notification";

// App.tsx
import {
  NotificationContainer,
  OrderStatusContiner,
  MonitorControllerContainer
} from "./containers";

1. typeScript 예시

가. compile 타임에 적용되는 스펙트럼

type Person = {
	name: string;
	age: number;
	job?: []; // 있을 수도, 없을 수도 있는 값에는 ?를 붙인다.
}

// 아래와 같이 런타임에서 typeScript 에러를 잡을 수 없다.
// 어떤 상황이 런타임이고 컴파일인지 정확히 파악해야 어디에서 에러가 나는지 확인할 수 있다.
const p: Person = JSON.parse(prompt('객체를 입력해주세요'));

// 제네릭을 사용한 타입스크립트 컴파일 타임 예시
function identity<T>(arg: T): T {
  return arg;
}
identity<string>('acdd');
identity<number>('adf'); // compile error!
 

나. type & interface 비교