Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

week01 - Typescript 기초와 Nodejs 동작원리 #2

Open
hyejungg opened this issue Apr 14, 2022 · 0 comments
Open

week01 - Typescript 기초와 Nodejs 동작원리 #2

hyejungg opened this issue Apr 14, 2022 · 0 comments
Assignees
Labels

Comments

@hyejungg
Copy link
Member

hyejungg commented Apr 14, 2022

🔥 알게된 점

  1. Javascript
  2. Typescript
  3. Nodejs 동작원리

📚 배운 점

Javascript / Typescript 는 일급 객체

  • 변수 or 데이터 구조에 담을 수 있음
  • 다른 함수에 파라미터로 전달 가능
  • 반환 값으로 사용 가능
    -> 모두 충족한다면, 일급 객체 (특별한 종류의 값)

함수 표현법

  1. 함수 선언식 : `function name (a, b) { return }
  • 선언문이 정의되기 전에 사용 가능
console.log(menu2('gd'));
function menu(dinner){
    return `오늘 메뉴는 ${dinner}입니다.`;
}
  1. 함수 표현식 : let name = (a, b) => { return }
    -실제 실행 흐름이 해당 함수에 도달했을 때 생성 (그때부터 사용 가능)
const menu = (dinner) => {
  return `오늘 메뉴는 ${dinner}입니다.`;
};
const str2 = menu("곱창");
console.log(str2);
console.log(menu("곱창")); //일급 객체니까 가능

Typescript 기초 문법 (data type)

  1. 배열 타입
//* const arr: T[] = 초기화
//* let arr: Array<T> = 초기화
const ages: Array<number> = [1, 2, 3, 4, 5];
const anyArray: any[] = [1, 2, 3, "", false];
  • Array.map() : 배열 내 주어진 원소를 새로운 배열로 생성
let num = [1, 2, 3, 4];
const newNumArr = num.map((x) => (x *= 2));
newNumArr.map((x) => {
  x *= 2;
  console.log(x);
});
console.log(newNumArr);
  • for-of 문으로 배열 순회
for (const x of newNumArr) {
  console.log(x);
}
  1. 객체 타입
    (1) Object : 자바스크립트의 모든 생성자를 포함함. js의 모든 타입이 할당 가능한 타입
    (2) object : 원시타입(객체 ex. 배열은 가능)을 제외한 나머지 모두 가능한 타입
const f1 = (obj: object): void => {
  console.log(obj);
};
const f2 = (obj: Object): void => {
  console.log(obj);
};

f2([1, 2, 3, 4]);
f2("string");

f1([1, 2, 3, 4]);
// f1('string'); //오류. 객체타입만 보낼 수 있기 때문
  1. null / undefined
  • 자기자신 외의 값 할당 불가. null에는 null만, undefined에는 undefined만
let p: null = null;
let u: undefined = undefined;
  1. Type assertions
  • 타입을 직접 단언하는 것
    (1) angle-bracket : <> 로 단언
let myName: any = "김헤정";
let myNameLength: number = (<string>myName).length; //이런 식으로 형변환해서 myName이 str임을 보장
console.log(myNameLength);

(2) as

let myName2: any = "서버";
let myName2Length: number = (myName2 as string).length; //myName2는 any지만 string이 확실해!
console.log(myName2Length);
  1. 마법의 any
  • 타입 검사를 하지 않음
  • 알기 어려운 타입 받을 때 or 배열에 string, boolean 등 일부만 알고 있는 경우 사용
  • 남발하면 안돼 !!!!!!!!!

interface

  • 타입 체크를 위해 !여러가지 프로퍼티를 갖는 새로운 타입 정의!
  • 변수, 함수, 클래스 모두 사용 가능
interface Sopt { property: T }

interface ServerPart {
  name: string;
  age: number;
  group: string;
  mbti?: string[]; //선택적 프로퍼티
}

선택적 프로퍼티 : ?를 붙임. 이 프로퍼티는 들어올 수도 안들어올 수도 있다는 뜻. 인터페이스 외 함수에서도 사용 가능

function buildName(firstName: string, lastName?: string) {
  if (lastName) return firstName + " " + lastName;
  else return firstName;
}

Nodejs의 동작 원리

Nodejs : 브라우저 밖에서 자바스크립트를 돌려볼 수 있는 런타임 환경

  • Non-Blocking I/O
  • Single Thread
  • Event-Driven
    -> Nodejs는 I/O가 끝나기 전에 작업을 진행하는 Non-Blocking I/O방식으로 돌아가는 Single Thread형태로, 이벤트가 발생할 때 미리 저장해둔 작업을 수행하는 Event-Driven방식으로 동작한다.

image

참고자료

@hyejungg hyejungg self-assigned this Apr 14, 2022
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

1 participant