타입
● 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("무한루프");
}
}
|