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;
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;
notSure = 'hi';
notSure = true;
✔️ 💩any
any
어떤 것이든 다 담을 수 있다 // 💩
let anything:any = 0;
anything = 'hi';
anything = true;
✔️ void
void
함수의 리턴이 없을 때의 타입. 생략도 가능하다
function print(): void {
console.log('hello');
return;
}
let unusable: void = undefined;
✔️ never
never
에러가 발생하면 어플리케이션이 죽으니까 리턴값이 절대 없다. 항상 예외가 발생해서 비정상적으로 종료되거나 무한 루프 때문에 종료되지 않는 함수의 반환 타입을 지정할 때 never 타입을 지정.
단, never 타입을 지정했는데 리턴이 있다면 에러 발생.
function throwError(message: string): never {
throw new Error(message);
while (true) {}
}
let neverEnding: never;
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 Developer extends Person {
skills: string[];
}
const expert: Developer = {
name: 'april',
skills: ['typescript', 'react']
};
const people: Person[] = [person, expert];