2022년 7월 14일

Daisy🌼·2022년 7월 14일
0

기본 타입2

readonly

  • 값의 속성을 읽기 전용으로 설정할 수 있습니다.

  • 따라서 readonly 키워드를 적용하면 값을 변경하거나 재할당할 수 없습니다.

const arr: readonly number[] = [1, 2, 3];
arr.push(); // 값이 읽기 전용이기 때문에 에러가 발생합니다.
arr.slice(0, 2); // slice() 메서드는 값의 불변성(immutability)를 유지하기 때문에 가능합니다.

tuple

  • 튜플은 배열의 길이가 고정되고 각 요소의 타입이 지정되어 있는 배열 형식입니다.
const tuple: [string, number, boolean] = ["Daisy", 25, true];

undefined, null

  • 자바스크립트와 마찬가지로 undefined와 null에 대응하는 타입을 지정할 수 있습니다.

any

  • 모든 타입에 대해서 허용하는 타입입니다.

  • 타입스크립트의 타입 안정성, 에러 방지 등의 보호 장치로부터 비활성화한다고도 볼 수 있습니다.

  • 자바스크립트로 구현되어 있는 코드에 타입스크립트를 점진적으로 도입할 때 활용할 수도 있습니다.

unknown

  • 값의 타입을 알 수 없을 때 지정하는 타입입니다.

  • 예를 들어 외부 API로부터 전달받은 값의 타입을 알 수 없을 때, unknown을 지정할 수 있습니다.

  • unkonwn타입의 값으로 작업하는 것을 사전에 방지해 타입을 체크할 수 있도록 합니다.

// unknown 값으로 작업을 하면 에러가 발생합니다.
function foo(x: unknown) {
  x; // x의 타입을 알 수 없기 때문에 에러가 발생합니다.
}

// 따라서 타입을 체크하는 코드를 작성해서 사용할 수 있습니다.
function foo(x: unknown) {
  if (typeof x === "number") {
    return x + 10;
  }
}

void

  • 함수가 값을 리턴하지 않음을 의미하는 타입입니다.

  • 함수에 리턴문이 없거나, 리턴문에 어떤 값을 명시하지 않았을 경우 타입스크립트가 이를 추론합니다.

function foo() {
  return; // 어떠한 값도 리턴하지 않기 때문에 void로 타입 추론됩니다.
}

never

  • 예외(execution)를 throw하거나 프로그램 실행을 종료하는 함수를 의미합니다.
function foo(message: string): never {
  throw new Error(message);
}
  • 또한 유니온 타입에서 더이상 남아있는 것이 없다고 판단할 때 사용됩니다.
function foo(x: string | number) {
  if (typeof x === "string") {
    x; // string
  } else if (typeof x === "number") {
    x; // number
  } else {
    x; // 더이상 유니온 타입에 남는 타입이 없으므로 never
  }
}

❗️ 3줄 요약

  • readonly는 해당 값을 읽기 전용으로 지정할 수 있는 키워드다.

  • any는 모든 타입에 대해서 허용하는 타입이다.

  • undefined, null, void, unknown, never 타입이 존재한다.

📕 참고 자료

노마드코더 - typescript-for-beginners

TypeScript 공식 문서


CS 공부를 조금씩 하고 있는데 자세하기 적기에는 분량이 적어서 TIL에 올려도 되는지 모르겠다😅 이해가 많이 부족하지만 짧게나마 배운 내용을 복습한다는 생각으로 정리해야겠다

MAC 주소의 구조

  • MAC 주소는 랜카드의 고유한 물리 주소인데, 데이터 송수신에 중요한 역할을 한다.

  • 앞서 본 물리 계층에서 허브라는 네트워크 장치를 알아봤다. 허브는 컴퓨터를 여러 대 연결할 수 있는 장치인데, 한쪽 컴퓨터에서 데이터를 보내면 동일한 허브에 연결되어 있는 다른 컴퓨터에도 데이터를 전송한다는 문제점이 있다.

  • 이를 MAC 주소로 해결할 수 있다.(유일한 방법인지는 모르겠다...!)

  • MAC 주소는 OSI 7계층의 데이터 링크 계층에서 사용된다. 즉 데이터에 이더넷 헤더라는 추가 정보를 붙여서 데이터를 캡슐화하는데, 이때 목적지 MAC 주소, 출발지 MAC 주소와 상위 계층의 프로토콜 유형을 담는다. + 트레일러도 붙여준다!

  • 이렇게 이더넷 헤더와 트레일러가 추가된 데이터를 프레임이라고 한다.

  • 캡슐화된 프레임이 물리 계층으로 전달되고, 비트열로 구성되어 있는 프레임이 전기 신호로 변환되어 데이터를 수신하는 쪽으로 전달된다.

  • 여기서 MAC 주소의 핵심! 허브에 연결되어 있는 다른 컴퓨터들은 이더넷 헤더의 목적지 MAC 주소를 자신의 MAC 주소와 비교한다.

  • 만약 목적지 MAC 주소가 자신의 주소와 맞지 않다면 데이터를 파기한다.

  • 따라서 목적지 MAC 주소가 자신의 주소와 동일한 컴퓨터만 데이터를 역캡슐화한다.

내일은 스위치에 대해서 알아보는데, 허브에서 발생할 수 있는 충돌 문제를 스위치가 어떻게 해결하는지, 스위치의 구조가 어떤지 알아볼 수 있을 것 같아서 흥미롭다.😊

❗️ 3줄 요약

  • MAC 주소는 랜카드의 물리 주소인데, OSI 7계층의 데이터 링크 계층에서 활용된다.

  • 데이터 링크 계층에서 데이터를 캡슐화할 때 목적지와 출발지 MAC 주소를 포함한다.

  • 허브에 연결되어 있는 다른 컴퓨터들은 이 MAC 주소를 보고 자신에게 전달되는 것이 아니면 파기, 자신에게 전달되는 것이면 역캡슐화를 한다.

📕 참고 자료

도서 <모두의 네트워크>

profile
커피와 재즈를 좋아하는 코린이 | 좋은 글 좋은 코드를 쓰고 싶습니다

0개의 댓글