Untitled

2-1. 원시타입Primitive Type과 리터럴타입Literal Type

Primitive Types

// number
let num: number = 123;
num = -123;
num = 0.123;
num = Infinity;
num = -Infinity;
num = NaN; // Not a number

// num = "hello"; // error
// num.toUpperCase(); // error

// string
let str: string = "hello";
str = 'hello';
str = `hello ${num}`;

// str = 123; // error
// str.toFixed(); // error

// boolean
let bool: boolean = true;
bool = false;

// null
let null1: null = null

// undefined
let undef: undefined = undefined;

Literal Types

/* literal types */
let numA: 10 = 10;
let strA: "hello" = "hello";
let boolA: true = true;

2-2. 배열과 튜플

// Array
let numArr:number[] = [1, 2, 3];
let strArr:string[] = ["eden", "michael", "hazard"];
// Using generic syntax
let boolArr: Array<boolean> = [true, false, true]; 

// Union type array
let unionArr: (string | number)[] = [1, "hello"];

// Multi-dimensional array
let multiArr: number[][] = [
  [1, 2, 3],
  [4, 5,],
];
// Tuple - 길이와 타입이 고정된 배열
let tup1: [number, number] = [1, 2];
// tup1 = [1, 2, 3]; // error
let tup2: [number, string, boolean] = [1, "2", true];
// tup2 = ["1", 2, false] // error

// Tuple의 활용
const players: [string, number][] = [
  ["hazard", 10],
  ["messi", 10],
  ["kang-in lee", 17]
];

// 주의할 점
tup1.push(1);
tup1.pop(); // not error