15차 회의록 - sigma-crow/n2t GitHub Wiki
15차 회의록
목차
회의 일시
- 2021.04.10 21:00
Markdown 학습
Markdwon 관련 글 탐색
마크다운 파서 만들기 고군부투 (1) 마크다운 파서 만들기(1)- 합리화와 사전조사
Markdown 관련 도구 탐색
react-md-editor
- 지원하는 MD 파서에 대해서 이해하고 학습하기 위해 학습
- 이해 이후 위 라이브러리를 커스텀하여 우리가 원하는 형태의 편집기 제작 예정
React
- 현진이 은지 react 자습서 따라해보기
-
react에서 slice() 함수는 배열의 새로운 복사본을 생성하는 함수
-
let은 var과 다르게 블록 내 지역 변수 선언?이다.
-
제일 위에있는 부모에서 props로 데이터를 , state(상태)를 자식들이 사용 가능하게 한다.
-
react는 컴포넌트(캡슐화되어 독립적으로 동작 가능)를 이용해 복잡한 UI 구성
-
모든 React 컴포넌트 클래스는 생성자를 가질 때 super(props) 호출 구문부터 작성
-
공유 state -> 부모 컴포넌트는 props를 사용해 자식 컴포넌트에 state 다시 전달 가능
-
react에서 함수 컴포넌트는 state 없이 render 함수만 가짐
-
concat()은 기존 배열을 변경하지 않음
-
key가 props에 속하는 것처럼 보여도 this.props.key로 참조 불가능
-
TypeScript
짧게 보는 JavaStript
- 처음엔 브라우저를 위한 스크립팅 언어
- 정적 페이지의 간단한 네트워크로 시작하여 모든 종류의 어플리케이션을 위한 플랫폼으로 점점 성장
- node.js를 사용하여 서버를 구현할 수 도 있으며 이제는 오직 JavaScript만을 이용하여 전체 스택을 프로그래밍할 수 있음
하지만 JavaScript의 별난 점이 있음
if ("" == 0) {
// 참입니다! 근데 왜죠??
}
if (1 < x < 3) {
// *어떤* x 값이던 참입니다!
}
const obj = { width: 10, height: 15 };
// 왜 이게 NaN이죠? 철자가 어렵네요!
const area = obj.width * obj.heigth;
-
동일 연산자(==) 인수를 강제 변환해 예기치 않은 동작 유발
-
존재하지 않는 프로퍼티의 접근 허용
-
대부분 언들은 이런 오류 표출해주지만... JavaScript는 그렇지 못함
TypeScript: 정적 타입 검사자 (TypeScript: A Static Type Checker)
-
정적 타입 검사 = 프로그램 실행 전에 값의 종류를 기반으로 프로그램의 오류를 찾음
// @errors: 2551 const obj = { width: 10, height: 15 }; const area = obj.width * obj.heigth;
TypeScirpt는 JavaScript의 구문이 허용되는 상위 집합 언어
구문(Syntax)
// @errors: 1005
let a = (4
- )이 없으므로 구문 오류
타입(Types)
// @errors: 2363
console.log(4 / []);
- 구문적으로 옳은 코드지만 NaN을 출력하는 올바르지 않은 연산이므로 오류
런타임 특성
- JavaScript 코드의 런타임 속성을 절대 변화시키지 않음
- TypeScript가 코드에 타입 오류를 검출해도, JavaScript 코드를 TypeScript로 이동시킨 것을 같은 방식으로 실행됨
삭제된 타입
- TypeScript의 컴파일러가 코드 검사 마치면 타입을 삭제해 결과적으로 컴파일 된 코드만 만듬.
- 코드가 컴파일 되면, 결과로 나온 일반 JS 코드에는 타입 정보가 없음.
타입 추론
let helloWorld = "Hello World";
- 이렇게 변수를 생성하면서 동시에 특정값에 할당하는 경우, TypeScript는 그 값을 해당 변수의 타입으로 사용
- TypeScript가
helloWorld가string임을 알게 됨.
타입 정의하기
const user = {
name: "Hayes",
id: 0,
}
- 이 객체의 형태를 명시적으로 나타내기 위해서
interface로 선언
interface User {
name: string;
id: number;
}
- 변수 뒤에
:TypeName의 구문을 사용해 Javascript 객체가interface의 형태를 따르고 있음을 선언
interface User {
name: string;
id: number;
}
// ---cut---
const user: User = {
name: "Hayes",
id: 0,
};
- 클래스로도 선언 가능
interface User {
name: string;
id: number;
}
class UserAccount {
name: string;
id: number;
constructor(name: string, id: number) {
this.name = name;
this.id = id;
}
}
const user: User = new UserAccount("Murphy", 1);
- 함수 매개변수와 리턴 값을 명시할 때도 사용 가능
// @noErrors
interface User {
name: string;
id: number;
}
// ---cut---
function getAdminUser(): User {
//...
}
function deleteUser(user: User) {
// ...
}
JavaScript에 사용할 수 있는 원시타입 : boolean, bigint, null, number, string, symbol, object, undefined
추가하여 확장할 수도 있음 : any(어떤 것이든), unknown(이 타입을 사용하는 사람이 타입이 무엇인지 선언했는가 확인하세요), never(이 타입은 발생될 수 없습니다), void(undefined를 리턴하거나 리턴 값이 없는 함수)
발표
- react
- ts
- 관한 발표?를 진행?
- 우리 ts 쓸거야? 개발할때?
- 귀찮아져 그런데 견고해져
- 코드 안정성 이런게 좋아지는 기업
- 일단 우리가 코드를 해석하기 위해서 공부를 했다고 하자
다음 회의
일자
- 2021.04.12 20:00
TODO
- MD 연결
- 디자인 작업
- 피그마로 디자인 확정
- 스프린트 백로그에서 기능을 정해
- 개발을 하면 됨
- 아마도 피그마 디자인하고 그냥 FE 그리면 그동안 내가 BE 작업을 좀 하고
- 상태관리 막막 노가다
- 내가 손을 봐줄게
- custom hook 이 쉬운건 아니다.