TypeScript를 사용하는 가장 큰 이유 중 하나는 정적 타입을 지원하고 기본적으로 명확하게 타입을 지정하기 때문에 컴파일 단계에서 오류를 발견할 수 있다.
불리언 타입으로 참(true / false)로 일컫는 값이다.
let isDone: booean = false;
숫자형 타입으로, TypeScript는 부동 소수 값이기 때문에 TypeScript 16진수, 10진수 및 ECMAScript 2015에 소개된 2진수, 8진수 리터럴도 사용할 수 있다.
let decimal: number = 6;
let hex: number = 0xf00d;
let binary: number = 0b1010; // 이진법
let octal: number = 0o744; // 팔진법
문자열 타입으로 TypeScript도 ("") 및 ('')를 문자열 데이터를 감싸는데 사용한다.
템플릿 리터럴 또한 자바스크립트와 역시 TypeScript도 사용할 수 있으며, ${}을 이용해 표현식을 포함 시킬 수 있다.
let color: string = "blue";
color = 'red';
let sentence: string = `Hello, my name is ${ fullName }`.
TypeScript의 배열 타입은 두 가지 방법으로 쓸 수 있다.
첫 번째 방법은 배열 요소들을 나타내는 number 타입 뒤에 []를 쓴다.
두 번째 방법은 제네릭 배열 타입을 이용한다.
1) let list: number[] = [1, 2, 3];
2) let list: Array<number> = [1, 2, 3];
튜플타입은 타입과 개수가 고정된 배열을 쌍으로 나타낼 때 사용한다.
요소들의 타입이 모두 같을 필요는 없다.
let x: [string, number]
x = ["hello", 10]
console.log(x[0].substring(1)); // 성공
console.log(x[1].substring(1)); // 오류, 'number'에는 'substring' 이 없습니다.
0부터 시작해서 멤버들의 번호를 매긴다. 하나의 값을 수동으로 설정해 번호를 바꿀 수도 있고 매겨진 번호를 이용해 이름을 알아낼 수 있다.
enum Color {Red, Green, Blue}
let c: Color = Color.Green
enum Color {Red = 1, Green = 2, Blue = 4}
let c: Color = Color.Green
enum Color {Red = 1, Green, Blue}
let colorName: string = Color[2];
console.log(colorName) //값이 2인 Green
알지 못하는 타입을 표현할 때 사용한다. 타입 검사를 하지 않고, 컴파일을 할 때 통과된다. 또한 타입의 일부만 알고 전체는 알지 못할 때 유용하다. 하지만 왠만하면 any 안하는게..
let notSure: any = 4;
undefined 과 null 둘 다 각각 자신의 타입 이름으로 undefined , null로 사용한다.
또한 다른 모든 타입의 하위 타입이다.
let u: undefined = undefined;
let n: null = null;
절대 발생할 수 없는 타입일 때, 예를 들어 함수 표현식이나 화살표 함수 표현식에서 항상 오류를 발생시키거나, 절대 반환하지 않은 반환 타입으로 쓰인다.
// never를 반환하는 함수는 함수의 마지막에 도달할 수 없다.
function error(message: string): never {
throw new Error(message);
}
// 반환 타입이 never로 추론된다.
function fail() {
return error("Something failed");
}
number, string, boolean, bigint, symbol, null, 또는 undefined 가 아닌 나머지를 의미합니다.
declare function create(o: object | null): void;
create({prop: 0}) // success
create(null) // success
create(42); // 오류
create("string"); // 오류
create(false); // 오류
create(undefined); // 오류
실제 타입이 현재 타입보다 더 구체적일 때 발생한다.
타입 단언은 다른 언어의 타입 변환과 유사하다. 런타임에 영향을 미치지 않는다.
"angle-bracket" 방법과 "as" 문법이 있다.
1)
let someValue: any = "this is a string";
let strLength: number = (<string>someValue).length;
2)
let someValue: any = "this is a string";
let strLength: number = (someValue as string).length