값의 속성을 읽기 전용으로 설정할 수 있습니다.
따라서 readonly
키워드를 적용하면 값을 변경하거나 재할당할 수 없습니다.
const arr: readonly number[] = [1, 2, 3];
arr.push(); // 값이 읽기 전용이기 때문에 에러가 발생합니다.
arr.slice(0, 2); // slice() 메서드는 값의 불변성(immutability)를 유지하기 때문에 가능합니다.
const tuple: [string, number, boolean] = ["Daisy", 25, true];
모든 타입에 대해서 허용하는 타입입니다.
타입스크립트의 타입 안정성, 에러 방지 등의 보호 장치로부터 비활성화한다고도 볼 수 있습니다.
자바스크립트로 구현되어 있는 코드에 타입스크립트를 점진적으로 도입할 때 활용할 수도 있습니다.
값의 타입을 알 수 없을 때 지정하는 타입입니다.
예를 들어 외부 API로부터 전달받은 값의 타입을 알 수 없을 때, unknown
을 지정할 수 있습니다.
unkonwn
타입의 값으로 작업하는 것을 사전에 방지해 타입을 체크할 수 있도록 합니다.
// unknown 값으로 작업을 하면 에러가 발생합니다.
function foo(x: unknown) {
x; // x의 타입을 알 수 없기 때문에 에러가 발생합니다.
}
// 따라서 타입을 체크하는 코드를 작성해서 사용할 수 있습니다.
function foo(x: unknown) {
if (typeof x === "number") {
return x + 10;
}
}
함수가 값을 리턴하지 않음을 의미하는 타입입니다.
함수에 리턴문이 없거나, 리턴문에 어떤 값을 명시하지 않았을 경우 타입스크립트가 이를 추론합니다.
function foo() {
return; // 어떠한 값도 리턴하지 않기 때문에 void로 타입 추론됩니다.
}
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
}
}
readonly는 해당 값을 읽기 전용으로 지정할 수 있는 키워드다.
any는 모든 타입에 대해서 허용하는 타입이다.
undefined, null, void, unknown, never 타입이 존재한다.
노마드코더 - typescript-for-beginners
CS 공부를 조금씩 하고 있는데 자세하기 적기에는 분량이 적어서 TIL에 올려도 되는지 모르겠다😅 이해가 많이 부족하지만 짧게나마 배운 내용을 복습한다는 생각으로 정리해야겠다
MAC 주소는 랜카드의 고유한 물리 주소인데, 데이터 송수신에 중요한 역할을 한다.
앞서 본 물리 계층에서 허브라는 네트워크 장치를 알아봤다. 허브는 컴퓨터를 여러 대 연결할 수 있는 장치인데, 한쪽 컴퓨터에서 데이터를 보내면 동일한 허브에 연결되어 있는 다른 컴퓨터에도 데이터를 전송한다는 문제점이 있다.
이를 MAC 주소로 해결할 수 있다.(유일한 방법인지는 모르겠다...!)
MAC 주소는 OSI 7계층의 데이터 링크 계층에서 사용된다. 즉 데이터에 이더넷 헤더라는 추가 정보를 붙여서 데이터를 캡슐화하는데, 이때 목적지 MAC 주소, 출발지 MAC 주소와 상위 계층의 프로토콜 유형을 담는다. + 트레일러도 붙여준다!
이렇게 이더넷 헤더와 트레일러가 추가된 데이터를 프레임이라고 한다.
캡슐화된 프레임이 물리 계층으로 전달되고, 비트열로 구성되어 있는 프레임이 전기 신호로 변환되어 데이터를 수신하는 쪽으로 전달된다.
여기서 MAC 주소의 핵심! 허브에 연결되어 있는 다른 컴퓨터들은 이더넷 헤더의 목적지 MAC 주소를 자신의 MAC 주소와 비교한다.
만약 목적지 MAC 주소가 자신의 주소와 맞지 않다면 데이터를 파기한다.
따라서 목적지 MAC 주소가 자신의 주소와 동일한 컴퓨터만 데이터를 역캡슐화한다.
내일은 스위치에 대해서 알아보는데, 허브에서 발생할 수 있는 충돌 문제를 스위치가 어떻게 해결하는지, 스위치의 구조가 어떤지 알아볼 수 있을 것 같아서 흥미롭다.😊
MAC 주소는 랜카드의 물리 주소인데, OSI 7계층의 데이터 링크 계층에서 활용된다.
데이터 링크 계층에서 데이터를 캡슐화할 때 목적지와 출발지 MAC 주소를 포함한다.
허브에 연결되어 있는 다른 컴퓨터들은 이 MAC 주소를 보고 자신에게 전달되는 것이 아니면 파기, 자신에게 전달되는 것이면 역캡슐화를 한다.