September 02, 2020
TypeScript로 Type 체크만 하는 정도로 써보고 깊게 사용해보지 못했는데, TypeScript와 React 기반으로 컴포넌트, 아키텍쳐 설계를 함께 학습할 수 있는 기회가 생겼다. 항상 혼자보는 목적으로 기록을 해왔는데 이번엔 블로그에도 올려보자는 생각으로 좀 더 열심히 기록을 하기로 했다.
적정기술
도구
목표, 바램, 기대
환경
요즘 오픈소스 컨트리뷰톤을 하면서 컨트리뷰션에 관심이 많은데 Blueprint UI Framework 에 기여해보고싶다!
let foo: number = 10; // 타입 추론을 통해 foo 를 number 로 인지한다.
foo = false; // foo 가 number type 으로 되었기 때문에 type 이 다르다고 오류 발생한다.
// 가변인자를 처리하는 함수구나라는걸 알려줄 수 있다. (...args)
function bar(...args) {
}
type Age = number; // type alias.
let age: Age = 10;
let weight: number = 70;
type alias 는 컴파일 타임에만 작동되는 문법 요소이다.
compile 에만 작동되는 요소
runtime 에만 작동되는 요소
// nesting
type Age = number;
type Foo = {
age: Age;
name: string;
};
const foo: Foo = {
age: 10,
name: 'kim',
}
// type 과 interface 둘 다 비슷한 형태로 보이지만 이후 강의에서 다룰 예정이다.
interface Bar {
age: Age;
name: string;
}
const bar: Bar = {
age: 10,
name: 'kim',
}
yarn create-react-app my-app --template typescript
tsconfig.json
// React package 를 트랜스파일링 된 후에 사용을 하기 때문에 꼭 필요하다.
import React from 'react';
function App() {
return (
<h1 id="header">Hello Tech</h1>
)
}
**Babel trasnpiling**
function App() {
return React.createElement("h1", { id: "header" }, "Hello Tech");
}
import React from 'react';
// transpiling 됐을 때, 2번째 인자로 객체를 통해 값을 주기 때문에 객체로 넘어온다.
function App(props) {
return (
<h1>{ props.title }</h1> // transpiling 을 했을 때 props 가 넘어온 변수라는걸 체크해줄 수 없기 때문에 {} 로 구분해준다.
)
}
공부해야 할 것들은 많고, 자신이 아직 부족하다고 느끼면서 공부를 하는데 좋은 시니어가 되기 위해 주니어 때 놓치지 말아야 할 부분이 무엇이 있을지에 대해 Q & A 에 올렸었다. 강사님께서 너무 좋은 답변을 해주셔서 메모해 두었다.
첫 시간이어서 광범위한 부분을 짧게 설명해주셔서 전체적으로 알고 있던 부분도 한번 더 되새기고, 몰랐던 부분도 알 수 있는 시간이었다. 2시간 반인데 쉬는시간에도 질의응답을 해주셔서 정말 알찬 시간이었다. 2시간 반이 이렇게 짧은 시간이었다니.. 그나저나 다시 React TypeScript 강의도 듣게 되었는데 Gatsby로 블로그를 바꿔야겠다. 지금 가독성이 현저히 떨어진다..