타입
● boolean
1
2
  | let boolean: boolean;
let falseBoolean: boolean = false;
  | 
● number
1
2
3
  | let number: number;
let integer: number = 6;
let float: number = 1.2345;
  | 
● string
1
2
  | let string: string;
let firstName: string = "hyemin";
  | 
● array
1. 한가지 타입만 가지는 배열
1
2
  | let names1: string[] = ["John", "Kim"];
let names2: Array<string> = ["John", "Kim"];
  | 
2. 여러 타입을 가지는 배열 (유니온 타입 사용)
1
2
  | let array1: (string | number)[] = ["Kim", 10];
let array2: Array<string | number> = ["Kim", 10];
  | 
3. 여러 타입을 단언할 수 없을 때 (any)
1
  | let someArr: any[] = ["Kim", 1, [], {}, false];
 | 
4. 타입별칭, 인터페이스 사용
1
2
  | typeof Array = string[]
let array2: Array = ["Kim", 'lee'];
  | 
5. 읽기 전용 배열 생성(readOnly, ReadonlyArray)
1
2
  | let stringArr: readonly string[] = ["kim", "lee"];
let numberArr: ReadonlyArray<number> = [15, 18, 20];
  | 
● Tuple
1
2
3
4
5
6
  | let tuple1: [string, number];
tuple1 = ["a", 1];
// ERRROR!!!
tuple1 = ["a", 1, 3]; // 개수가 다름
tuple1 = [1, "a"]; // 순서가 다름
  | 
배열 안에 배열도 타입 지정 가능
1
2
3
4
5
  | let users: [number, string][];
users = [
  [15, "kim"],
  [20, "lee"]
];
  | 
메소드를 이용하여, 값을 넣기 가능!
1
2
3
4
5
  | let tuple2: [string, number];
tuple2 = ["a", 1];
tuple2.push(2);
console.log(tuple2); // ["a", 1, 2];
  | 
하지만 타입 안에 없는 값은 넣을 수 없음!!
1
2
3
4
5
  | let tuple2: [string, number];
tuple2 = ["a", 1];
tuple2.push(false);
// tuple2에는 string과 number 타입만 있고, boolean 타입은 없기 때문에 오류 발생
  | 
● any
어떤 타입이어도 상관없는 타입 (사용 지양)
1
2
3
  | let any: any = "abc";
any = 1;
any = [];
  | 
● unknown
any와 같이 어떤 타입이어도 할당 가능한 타입
1
  | let unknown: unknown = false;
  | 
any와는 다르게 다른 변수에 할당할 수 없음!
1
2
  | let string1: string = unknown;
let number1: number = unknown;
  | 
● object
1
2
3
4
5
  | let obj: object = {};
let arr: object = [];
let date: object = new Date();
const obj1: { id: number; title: string } = { id: 1, title: "타이틀1" };
 | 
자바스크립트에서의 null은 object 타입이라 object를 할당할 수 있으나,
 tsconfig.json 파일에서 컴파일 옵션 - strict을 true값으로 설정한다면 오류가 발생함!
● Union
여러 타입을 정의할 때 사용
1
2
3
  | let union: string | number;
union = "string!!";
union = 123;
  | 
● function
function에 직접 타입을 작성할 수 있음
1
2
3
4
5
  | let func1: (arg1: number, arg2: number) => number;
func1 = function (x, y) {
  return x * y;
};
 | 
return 값이 없다면 void 할당
1
2
3
4
5
  | let func2: () => void;
func2 = function () {
  console.log("Hi~");
};
 | 
● null, undefined
tsconfig.json 컴파일 옵션 - strictNullChecks가 false라면 오류가 발생하지 않음
1
2
3
4
5
6
  | let number1:number = undefined
let string9: string = undefined
let object9: {a:10,b:false} = undefined
let null: undefined = null
let null1: null =undefined
let void1: void = null
 | 
void에는 undefined 값 할당 가능
1
  | let void2: void = undefined;
  | 
● void
실제로 반환하는 값은 undefined
1
2
3
  | function greeting(): void {
  console.log("hi");
}
 | 
● never
return하는 값이 없을 때 사용
1
2
3
4
5
6
7
8
9
  | function throwError(): never {
  throw new Error("error");
}
function keepProcessing(): never {
  while (true) {
    console.log("무한루프");
  }
}
 |