타입스크립트 기본 type 정리하기
let isTrue: boolean;
isTrue = true;
let isFalse: boolean = false;
let num: number;
let integer: number = 6;
let float: number = 3.14;
let hex: number = 0xf00d; // 61453
let binary: number = 0b1010; // 10
let octal: number = 0o744; // 484
let infinity: number = Infinity;
let nan: number = NaN;
function plus(num1: number, num2: number): number {
return num1 + num2;
}
let greeting: string = "hello";
let myColor: string = `My color is ${red}.`;
function strings(str1: string, str1: string): string {
return str1 + str1;
}
let fruits: string[] = ['Apple', 'Banana', 'Mango'];
// or
let fruits: Array<string> = ['Apple', 'Banana', 'Mango'];
// 오직 숫자 아이템만 허용
let nums:number[] = [100, 101, 102];
// 오직 문자 아이템만 허용
let strs:string[] = ['apple', 'banana', 'melon'];
// 오직 불리언 아이템만 허용
let boos:boolean[] = [true, false, true];
// 모든 데이터 타입을 아이템으로 허용 (any 타입 - 뒤에서 배움)
let someArr: any[] = [0, 1, {}, [], 'str', false];
// 특정 데이터 타입만 아이템으로 허용 (union 타입 - 뒤에서 배움)
let selects:(number | string)[] = [102, 'apple'];
// 나머지 매개변수(스프레드 연산자) 를 이용한 배열 반환 함수
function getArr(...args: number[]): number[] {
return args;
}
getArr(1, 2, 3, 4, 5); // [1, 2, 3, 4, 5]
.push()
, .splice()
등을 통해 값을 넣는 행위는 막을 수 없다.let rgbColor: [number, number, number] = [255, 255, 0];
/* 타입 뿐만 아니라 값 자체를 고정 */
let tuple: [1, number];
tuple = [1, 2];
tuple = [1, 3];
tuple = [2, 3]; // Error - TS2322: Type '2' is not assignable to type '1'.
// 상수 집합
enum Avengers { SpiderMan, IronMan, Thor, Hulk }
let hero: Avengers = Avengers.SpiderMan; // 0
alias
기능과 interface
라는 문법을 추가했다.let a: any = 123;
let u: unknown = 123;
둘의 차이는?
-> 엄격함의 차이!
any: 어떤 것이든지 타입을 허용한다
unknown: 알 수 없다, 모른다
let assign_name: string | null | undefiened = null;
if (!assign_name) {
assign_name = '미네랄';
}
strictNullChecks 컴파일 옵션
- true 값을 주면 일반적인 타입 변수에 null을 할당할 수 없게 된다.
{
"strictNullChecks": true, /* 엄격한 null 검사 사용 */
}
let assign_name:string = null; // [오류] [ts] 'null' 형식은 'string' 형식에 할당할 수 없다.
if (!assign_name) {
assign_name = '미네랄';
}
출처: https://inpa.tistory.com/entry/TS-📘-타입스크립트-타입-선언-종류-💯-총정리?category=890799 [Inpa Dev 👨💻:티스토리]