한 입에 잘라먹는 TS 2주 완강 챌린지에 참여하면서, 인강을 들으며 데일리 Quiz에 대한 내용을 정리해보고자 한다.
인강에 다루는 모든 내용을 적기엔 시간적인 여유가 없어서, 가능하다면 추가적으로 중요한 내용들도 적어볼 생각이다.
Quiz 1.
정적 타입시스템과 동적 타입 시스템의 단점들은 보완하고 장점들은 그대로 가져온
TypeScript의 타입 시스템을 뭐라고 부를까요?
점진적 타입 시스템(Gradual Type System)(타입스크립트는 정적 타입 검사를 지원하는 점진적 타이핑 언어)
Quiz 2.
TypeScript의 타입 시스템이 갖는 특징에는 어떤 점이 있을까요?
바로 딱 떠오르는 한가지 특징만 적어주세요!
타입스크립트의 타입 시스템은 정적 타입 체크의 안정성과 동적 타입 추론의 유연성을 동시에 제공한다. 변수의 초기값을 통해 타입을 자동으로 추론할 수 있으면서도, 필요에 따라 개발자가 직접 타입을 지정할 수 있어서 코드의 안정성을 높이면서도 개발 효율성을 유지하기 좋다.
Quiz 3.
TypeScript를 컴파일 하면 그 결과로 무엇이 생성되나요?
JS 코드
(타입스크립트 컴파일 과정: TypeScript -> TypeScript AST(추상 문법 트리)(TSC가 변환하며, 공백, 주석 등 불필요 정보 제거) -> 타입 검사(by 타입 검사기) -> JavaScript -> JavaScript AST(추상 문법 트리) -> 바이트 코드 -> 실행 )
Quiz 4.
타입스크립트는 사용자(프로그래머)가 직접 컴파일러 옵션을 설정할 수 있는 자유로움을 제공해요
따라서 우리가 tsconfig.json 파일의 내용을 수정하면서 이런 저런 옵션을 설정할 수 있는데요,
이 파일에서 타입 검사를 매우 엄격하게 하려면 어떤 옵션을 어떤 값으로 설정해야 할까요?
ex) 옵션이름 : 설정 값
{
"compilerOptions" : {
strict: true // 문법을 엄격하게 검사한다.
}
}
Quiz 5.
아래 코드처럼 number 타입의 변수에 null 값을 할당하려고 해요
let numA: number = null; // ❌ 오류 발생!
이 코드는 엄격한 타입 검사가 활성화 되어 있을 때에는 오류로 판단되는데요
만약 위 코드를 오류가 아닌 것으로 판단하게 하려면 어떤 옵션을 어떤 값으로 설정해야 할까요?
ex) 옵션이름 : 설정 값
{
"compilerOptions" : {
"strictNullChecks": true // 타입이 null이 될 경우를 엄격하게 검사한다.
}
}
원시타입
원시타입이란, 하나의 값만 저장하는 타입으로 number, string, boolean null, undefined 이렇게 5가지 타입이 있다.
// number 타입
// 양수, 음수, 소수, 무한대, NaN(Not a Number) 등 모든 숫자를 표현할 수 있습니다.
let num1: number = 123;
let num2: number = -123;
let num3: number = 0.123;
let num4: number = -0.123;
let num5: number = Infinity;
let num6: number = -Infinity;
let num7: number = NaN;
// string 타입
// 문자열을 표현합니다. 큰따옴표, 작은따옴표, 백틱(``)을 사용할 수 있으며, 백틱을 사용하면 템플릿 문자열로 변수를 포함할 수 있습니다.
let str1: string = "hello";
let str2: string = "hello";
let str3: string = `hello`;
let str4: string = `hello ${num1}`;
// boolean 타입
// 논리적인 참(true)과 거짓(false)을 표현합니다.
let bool1: boolean = true;
let bool2: boolean = false;
// null 타입
// 값이 없음을 명시적으로 표현합니다.
let null1: null = null;
// undefined 타입
// 값이 정의되지 않았음을 표현합니다.
let unde1: undefined = undefined;
// 리터럴 타입
// 특정 값만을 가질 수 있는 타입을 지정합니다.
// 여기서는 숫자 10, 문자열 "hello", 불리언 true만을 가질 수 있는 변수를 선언하였습니다.
let numA: 10 = 10;
let strA: "hello" = "hello";
let boolA: true = true;
한 입에 잘라먹는 TS 2주 완강 챌린지에 참여하면서, 인강을 들으며 데일리 Quiz에 대한 내용을 정리해보고자 한다.
인강에 다루는 모든 내용을 적기엔 시간적인 여유가 없어서, 가능하다면 추가적으로 중요한 내용들도 적어볼 생각이다.
Quiz 1.
정적 타입시스템과 동적 타입 시스템의 단점들은 보완하고 장점들은 그대로 가져온
TypeScript의 타입 시스템을 뭐라고 부를까요?
점진적 타입 시스템(Gradual Type System)(타입스크립트는 정적 타입 검사를 지원하는 점진적 타이핑 언어)
Quiz 2.
TypeScript의 타입 시스템이 갖는 특징에는 어떤 점이 있을까요?
바로 딱 떠오르는 한가지 특징만 적어주세요!
타입스크립트의 타입 시스템은 정적 타입 체크의 안정성과 동적 타입 추론의 유연성을 동시에 제공한다. 변수의 초기값을 통해 타입을 자동으로 추론할 수 있으면서도, 필요에 따라 개발자가 직접 타입을 지정할 수 있어서 코드의 안정성을 높이면서도 개발 효율성을 유지하기 좋다.
Quiz 3.
TypeScript를 컴파일 하면 그 결과로 무엇이 생성되나요?
JS 코드
(타입스크립트 컴파일 과정: TypeScript -> TypeScript AST(추상 문법 트리)(TSC가 변환하며, 공백, 주석 등 불필요 정보 제거) -> 타입 검사(by 타입 검사기) -> JavaScript -> JavaScript AST(추상 문법 트리) -> 바이트 코드 -> 실행 )
Quiz 4.
타입스크립트는 사용자(프로그래머)가 직접 컴파일러 옵션을 설정할 수 있는 자유로움을 제공해요
따라서 우리가 tsconfig.json 파일의 내용을 수정하면서 이런 저런 옵션을 설정할 수 있는데요,
이 파일에서 타입 검사를 매우 엄격하게 하려면 어떤 옵션을 어떤 값으로 설정해야 할까요?
ex) 옵션이름 : 설정 값
{
"compilerOptions" : {
strict: true // 문법을 엄격하게 검사한다.
}
}
Quiz 5.
아래 코드처럼 number 타입의 변수에 null 값을 할당하려고 해요
let numA: number = null; // ❌ 오류 발생!
이 코드는 엄격한 타입 검사가 활성화 되어 있을 때에는 오류로 판단되는데요
만약 위 코드를 오류가 아닌 것으로 판단하게 하려면 어떤 옵션을 어떤 값으로 설정해야 할까요?
ex) 옵션이름 : 설정 값
{
"compilerOptions" : {
"strictNullChecks": true // 타입이 null이 될 경우를 엄격하게 검사한다.
}
}
원시타입
원시타입이란, 하나의 값만 저장하는 타입으로 number, string, boolean null, undefined 이렇게 5가지 타입이 있다.
// number 타입
// 양수, 음수, 소수, 무한대, NaN(Not a Number) 등 모든 숫자를 표현할 수 있습니다.
let num1: number = 123;
let num2: number = -123;
let num3: number = 0.123;
let num4: number = -0.123;
let num5: number = Infinity;
let num6: number = -Infinity;
let num7: number = NaN;
// string 타입
// 문자열을 표현합니다. 큰따옴표, 작은따옴표, 백틱(``)을 사용할 수 있으며, 백틱을 사용하면 템플릿 문자열로 변수를 포함할 수 있습니다.
let str1: string = "hello";
let str2: string = "hello";
let str3: string = `hello`;
let str4: string = `hello ${num1}`;
// boolean 타입
// 논리적인 참(true)과 거짓(false)을 표현합니다.
let bool1: boolean = true;
let bool2: boolean = false;
// null 타입
// 값이 없음을 명시적으로 표현합니다.
let null1: null = null;
// undefined 타입
// 값이 정의되지 않았음을 표현합니다.
let unde1: undefined = undefined;
// 리터럴 타입
// 특정 값만을 가질 수 있는 타입을 지정합니다.
// 여기서는 숫자 10, 문자열 "hello", 불리언 true만을 가질 수 있는 변수를 선언하였습니다.
let numA: 10 = 10;
let strA: "hello" = "hello";
let boolA: true = true;