기본 타입 알아보기

April·2022년 1월 19일
0

💫 Typescript

목록 보기
2/11
post-thumbnail

기본 타입

1️⃣ 기본타입: number, string, boolean, undefined, null

✔️ number

let decimal: number = 6;
let hex: number = 0xf00d;
let binary: number = 0b1010;
let octal: number = 0o744;
let big: bigint = 100n;

✔️ string

let color: string = "blue";
color = 'red';


let name: string = `april`;
let age: number = 35;
let sentence: string = `Hello, my name is ${name}.
 
I'll be ${age + 1} years old next month.`;

✔️ boolean

let isDone: boolean = false;

✔️ undefined

undefined: 값이 있는지 없는지 정해지지 않은 상태, 텅텅 비었는지 아닌지 결정되지 않은 상태

let name: undefined; // 💩이런식으로 할당하진 않음

let age:number | undefined; // number 또는 undefined을 할당할 수 있다
age = undefined;
age = 21;

✔️ null

null: 텅텅 비었다

let person: null; // 💩마찬가지로 이런식으로 할당하진 않음

let person2:string | null;
person2 = null;
person2 = 'yurim';


2️⃣ 기본타입: unknown, any, void, never, object

✔️ 💩unknown

unknown 어떤 타입인지 알 수 없다 // 💩

let notSure:unknown = 0; // number를 할당 했음에도
notSure = 'hi'; // string을 할당할 수 있다
notSure = true;

✔️ 💩any

any 어떤 것이든 다 담을 수 있다 // 💩

let anything:any = 0; // number를 할당 했음에도
anything = 'hi'; // string을 할당할 수 있다
anything = true;

✔️ void

void 함수의 리턴이 없을 때의 타입. 생략도 가능하다

function print(): void {
  console.log('hello');
  return;
}
let unusable: void = undefined; // 💩 undefined 밖에 할당이 안되기 때문에 사용하지 않음

✔️ never

never 에러가 발생하면 어플리케이션이 죽으니까 리턴값이 절대 없다. 항상 예외가 발생해서 비정상적으로 종료되거나 무한 루프 때문에 종료되지 않는 함수의 반환 타입을 지정할 때 never 타입을 지정.
단, never 타입을 지정했는데 리턴이 있다면 에러 발생.

// throwError 어플리케이션에서 예상치 못한 에러 발생가 발생할 경우 처리하는 함수
function throwError(message: string): never {
  // message -> server (log)
  throw new Error(message);
  while (true) {}
}
let neverEnding: never; // 💩

// objet 
let obj: object; // 💩
function acceptSomeObject(obj: object) {}
acceptSomeObject({ name: 'ellie' });
acceptSomeObject({ animal: 'dog' });

✔️ object

object: 자바스크립트의 객체 타입과 동일.
객체 속성에 대한 정보가 없기 때문에 타입 에러가 발생한다. 속성 정보를 포함해서 타입을 정의하기 위해서는 인터페이스(interface)를 사용해야 한다.

interface Person {
  name: string;
  age?: number; // 물음표가 들어갔다는 것은, 설정을 해도 되고 안해도 되는 값이라는 것을 의미합니다.
}

const person: Person = {
  name: 'april',
  age: 20
};

// interface 를 extends 해서 상속받기
interface Developer extends Person {
  skills: string[];
}

const expert: Developer = {
  name: 'april',
  skills: ['typescript', 'react']
};

const people: Person[] = [person, expert];

profile
🚀 내가 보려고 쓰는 기술블로그

0개의 댓글