
// 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;
number, string, boolean, null, undefined가 있다.null 값을 넣을 수 있었는데, TS 기본설정은 그렇지 않다. null 타입이 아닌 타입 변수에 null을 넣으면 오류가 난다.tsconfig.json에서 strictNullChecks 설정을 통해 변경해줄 수 있다.
strictNullChecks는 상위 옵션인 strict를 따라서 설정되는데, strict가 기본적으로 true이기 때문에 strictNullChecks도 default값은 true로 설정되어 있다.
따라서 원한다면 false로 변경해주면 다른 타입의 변수에도 null 값을 할당할 수가 있다. (당연히 strict는 true로 해놓으면서 strictNullChecks만 false로 할 수 있다)
{
"compilerOptions": {
"strict": true,
**"strictNullChecks": false,**
"target": "ESNext",
"module": "ESNext",
"moduleDetection": "force",
"outDir": "dist",
"skipLibCheck": true
},
"include": ["section1", "section2", "section3", "section10"]
}
/* literal types */
let numA: 10 = 10;
let strA: "hello" = "hello";
let boolA: true = true;
// 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,],
];
type[] 방식이다. 예를들어 각 요소가 number라면 number[], string이라면 string[], 이런식으로 배열 타입을 선언할 수 있다.Array<number> 처럼 T자리에 타입을 넣어서 배열 타입을 선언할 수 있다.[] 를 반복해주면 된다. 위 코드를 참고하자.// 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