9월 프리온보딩 프론트엔드 챌린지
· 약 6분
9월 프리온보딩 프론트엔드 챌린지 수강 도중 애매하게 알고 있었거나 새로이 알게된 정보 정리합니다.
타입스크립트
타입스크립트 공식 문서
1. soundness
- 건전성에 대한 참고 사항
- 건전성. 형식 체계 내에서 증명 가능한 명제가 의미론 상으로도 참이 되는 성질.
- 타입스크립트에는 soundness가 있는데 대표적으로 type assertion 이 있다.
const usersAge = ("23" as any) as number;- 타입스크립트는 런타임에 개입하지 않기 때문에 (이는 soundness 특성 때문) 개발자는 Narrowing으로 타입을 좁혀주어야 한다.
2. unknown
- 이 타입이 어떤 타입인지 개발자도 아직 모를 때
- any와 비슷하지만 unknown의 가장 큰 특징은 에러를 발생시킨다는 것에 있다.
- 타입가드를 사용하자.
let num: unknown = 99;
if (typeof num === 'string') {
num.trim();
}
(num as string).trim();
const jsonParserUnknown = (jsonString: string): unknown =>
JSON.parse(jsonString);
type User = { name: string };
const myUserAccount = jsonParserUnknown(`{ "name": "Samuel" }`) as User;
myUserAccount.name;
3. 구조적 서브 타이핑을 기반으로 하는 타입스크립트
구조적 타입
- 사실 타입스크립트의 타입은 집합의 일부일 수 있다. 즉 언어가 집합의 관계를 따진다.
- 객체가 어떤 속성들을 가지는지 구조를 기준으로 타입을 따진다.
- 타입의 생김새가 오리와 같다면 바로 오리의 타입임을 뜻한다.
- 오리처럼 보이고, 오리처럼 수영하고, 오리처럼 꽥꽥거리면 그것은 오리일 것이다.
- 거위가 오리와 같은 속성을 가지고 있다면 그것조차도 오리 타입
- 일반적으로 동적 타입 시스템을 설명하는 데 덕 타이핑이 사용된다.
명목적 타입
- 각 타입이 고유하다는 것을 의미.
- 즉 동일한 타입이나 데이터가 있더라도 타입을 공유할 수 없다.
- 이름 기반으로 타입을 따진다
- 작성한 타입이 런타임에 존재한다.
- C#, Java