고양이발일기
TypeScript 기본 문법 정리 본문
Typescript의 기본 타입들
- Boolean
- Number
- String
- Object
- Array
- Tuple
- Enum - 숫자 열거형
- Any
- Void
- Null
- Undefined
- Never
Boolean
true/false 값을 가지는 boolean 타입
let isShow: boolean = false;
Number
JavaScript에서와 마찬가지로 TypeScript의 모든 숫자는 부동 소수점 값이고 number 타입을 가진다.
TypeScript는 16 진수 및 10 진수 리터럴 외에도 ECMAScript 2015에 도입된 바이너리 및 8 진수를 지원한다.
let decimal: number = 6;
let hex: number = 0xf00d;
let binary: number = 0b1010;
let octal: number = 0o744;
String
JavaScript와 마찬가지로 TypeScript는 문자열 데이터를 표현하기 위해 큰 따옴표(“) 또는 작은 따옴표(‘)를 사용한다.
let color: string = "blue";
color = 'red';
template string
line3 과 line5는 같은 의미이다.
let fullName: string = `So wish`;
let age: number = 23;
let sentence: string = `Hello, my name is ${fullName}. I'll be ${ age + 1 } years old next month.`;
let sentence: string = "Hello, my name is " + fullName + ".\n\n" + "I'll be " + (age + 1) + " years old next month.";
Array
배열 타입은 두 가지 방법 중 하나로 작성할 수 있다.
1. 각 타입에 []를 붙여 해당 타입의 배열을 나타내기
let list: number[] = [1, 2, 3];
2. 일반 배열 타입 사용
let list: Array<number> = [1, 2, 3];
Tuple
튜플 타입을 사용하면 고정된 수의 요소 타입은 알고 있지만, 값의 종류가 다른 배열을 표현할 수 있다.
let x: [string, number]; //튜플의 타입 선언
x = ["hello", 10]; // OK
x = [10, "hello"]; // Error
변수 선언에 포함 되지 않은 인덱스에는 선언한 타입의 집합으로 판단한다.
음.. 윗 예시에서 string과 number를 선언했으니 x[2]과 같은 곳에 접근하면, string || number 의 타입이면 된다는 것이다.
Enum
enum은 숫자값 data set에 사람이 더 친숙한 이름을 지정하는 방법이다.
enum Color {Red, Green, Blue}
let c: Color = Color.Green;
따로 지정을 해주지 않는 이상은 0부터 시작을 한다.
Red = 0, Green = 1, Blue = 2
물론 따로 지정을 해주는 방법도 있다.
enum Color {Red = 1, Green = 2, Blue = 4}
let c: Color = Color.Green;
물론 한 변수만 지정해 시작 인덱스 값을 바꾸는 것도 가능하다.
Any
알지 못하는 변수 유형을 설명해야 할 때 컴파일시 타입 검사를 하지 않고 지나가도록 해야 하는 타입이다.
기존 javascript랑 가장 비슷하게 코딩할 수 있는 타입이다.
let notSure: any = 4;
notSure = "maybe a string instead"; //OK
notSure = false; // OK
Void
void는 타입이 전혀 없다는 것에서 any의 반대 의미다. 일반적으로 값을 반환하지 않는 함수의 반환 유형으로 이 타입을 사용한다.
void 타입의 변수 선언은 undefined나 null값만 지정할 수 있다.
function warnUser(): void {
alert("This is my warning message");
}
Null 과 Undefined
기본적으로 null과 undefined는 다른 모든 유형의 하위 유형이다. 즉,null과 undefined를 number와 같은 것에 할당이 가능하다.
let u: undefined = undefined;
let n: null = null;
Never
never 타입은 절대로 발생하지 않는 값의 타입을 나타낸다.
never는 함수 표현식의 리턴 타입이거나, 항상 예외를 던지는 화살표 함수 표현식이거나, 리턴하지 않는 표현식이다.
never 타입은 모든 타입의 서브 타입이며, 모든 타입에 assign 가능하지만 어떤 타입도 never (never 자체 제외)의 하위 타입이 아니고 assign 할 수 없다.
function error(message: string): never { // 반환할 수 없는 엔드포인트가 있는 경우
throw new Error(message);
}
function fail() { // 추론된 리턴타입이 네버일때
return error("Something failed");
}
function infiniteLoop(): never { // 무한루프와 같이 도달할 수 없는 엔드포인트가 있는 경우
while (true) {
}
}
Object
object는 non-primitive 타입, 즉 number, string, boolean, symbol, null 또는 undefined가 아닌 타입을 나타내는 타입이다.
선언한 값은 다 써야한다는 주의점이 있다.
interface MyObj {
foo: string;
bar: number;
}
interface MyObj2 {
foo: string;
}
const a: MyObj = {foo: 'foo', bar: 3};
const b: MyObj2 = a;
++
Type assertions
현재 타입 보다 구체적인 타입을 알고 있을 때 사용
1. “angle-bracket(<>)”구문
let someValue: any = "this is a string";
let strLength: number = (<string>someValue).length;
2. as 구문
let someValue: any = "this is a string";
let strLength: number = (someValue as string).length;
'개발 일기' 카테고리의 다른 글
Elasticsearch 기초 및 데이터 CRUD (0) | 2021.08.05 |
---|---|
AWS Elasticsearch Service 시작하기 (0) | 2021.08.05 |
Typescript 특징 정리 (0) | 2021.08.04 |
React date/time format 사파리 문제 (0) | 2021.08.03 |
Github Actions로 CI/CD 설정하기 (0) | 2021.07.26 |