[타입스크립트] TypeScript의 기본 타입 (2)

minidoo·2020년 10월 29일
0

타입스크립트

목록 보기
2/6
post-thumbnail

타입 선언 방법

let 변수명: 타입 = 값;

Object

Object (객체)는 여러 타입의 상위 타입이다. (Array, function, Date ...)

let obj: object = {};
let arr: object = [];
let func: object = function() {};
let date: object = new Date();

컴파일 옵션에서 엄격한 검사타입(strict)을 true로 설정하면, null은 포함하지 않는다.

let nullValue: object = null;
// Type 'null' is not assignable to type 'object'.

객체는 속성들에 대한 타입을 개별적으로 지정할 수 있다.
반복적으로 사용된다면, interface나 type을 사용할 수 있다.

let user: { name: string, age: number } = {
  name: 'miniddo',
  age: 20
} 

Any

Any는 모든 타입을 허용함으로 사용하지 않는 것이 좋다.
Any 사용을 엄격하게 금지하려면, 컴파일 옵션에 noImplicitAny: true 를 사용해 에러를 발생시킨다.

let age: any = 20;
any = '20';
any = false;

let list: any[] = [1, 'hello', false, []]; 

null과 undefined

let und: undefined = undefined;
let nul: null = null;

void

void 는 일반적으로 값을 반환하지 않는 함수에서 사용한다.

// 반환 값이 있는 경우
function func(message: string): string {
  return message;
}
console.log(func('hello'));	// hello

// 반환 값이 없는 경우
function func(message: string): void {
  console.log('no return');
}
console.log(func('hello'));	// no return

Unknown

Unknown 은 알 수 없는 타입으로 any 를 제외한 다른 타입에 할당할 수 없다.

let a: unknown = 123;

let v1: any = a;
let v2: boolean = a;	//  Type 'unknown' is not assignable to type 'boolean'
let v3: number = a;	// Type 'unknown' is not assignable to type 'number'

// 타입을 단언하면('as') 할당할 수 있다.
let v4: boolean = a as boolean;

반면 any 타입은 어디든 할당할 수 있다.
두 타입 모두 가급적 사용하지 않는 것이 좋다. ( 타입스크립트이기 때문이다! )

let a: any = 123;

let v1: boolean = a;	// 123
let v2: number = a;	// 123

never

never 은 절대 발생하지 않을 값이다.

function error(message: string): never {
  throw new Error(message);
}
// 타입 선언을 잘못한 경우

let never: [] = [];
never.push(1);	// Argument of type 'number' is not assignable to parameter of type 'never'

참고 사이트

https://heropy.blog/2020/01/27/typescript/

0개의 댓글