개발/TypeScript

개발/TypeScript

[TypeScript] interface vs type alias에 대한 개인적인 생각

타입스크립트에서 타입을 별도로 선언하는 방법으로는 interface와 type alias가 있는데 이 둘에 대해서 간단하게 알아보려고 합니다. 타입을 표현할 때 interface는 reference type의 타입을 표현한다. type alias는 primitive type, reference type 타입을 모두 표현할 수 있다. 타입을 중복 정의할 때 interface는 선언 병합(declaration merging)이 된다. type alias는 에러가 발생한다. 타입을 확장할 때 interface는 extends 키워드를 사용한다. type alias는 &(intersection) 연산자를 사용한다. 내부 동작을 제외하고 사용하는 관점에서는 이런 차이들이 있는 것 같습니다. 그래서 뭘 쓰면 좋을..

개발/TypeScript

[TypeScript] tsconfig.json 이해하기

보통 개발환경 세팅을 할 때 CRA(Create-React-App), Vite, CNA(Create-Next-App)과 같이 간단하게 프로젝트를 구성할 수 있는 방법을 많이 사용하다보니 tsconfig.json 파일을 직접 작성할 경우가 많이 없었던 것 같습니다. 혹은 TypeScript만으로 프로젝트를 한다고 해도 tsc -init과 같은 명령어를 이용해서 세팅하고 자세히 들여다 보는 경우가 없어서 tsconfig.json 파일의 옵션들에 대해서 제대로 알기가 어려웠는데 이번에 react-world 프로젝트를 진행하면서 다시 찾아보게 되었습니다. 아래 소스코드는 react-world 프로젝트에서 작성한 tsconfig.json 파일입니다. // tsconfig.json { "compilerOptions..

개발/TypeScript

[TypeScript] 매일매일 #4

함수 표현식에 타입을 넣을 때 2가지 방식 const printSomething = (thing: string): void ⇒ console.log(thing); const printSomething: (thing:string) ⇒ void = thing ⇒ console.log(thing); Class Class는 es5로 컴파일하면 생성자 함수, 프로토타입 스타일로 바뀐다. class Department { // private id: string; // private name: string; private employees: string[] = []; constructor(private readonly id: string, public name: string) {} describe(this: Depa..

개발/TypeScript

[TypeScript] 매일매일 #3

never 타입 // 이 함수는 반환값을 void로 추론하지만 never을 사용할 수 있다. // 에러를 출력하거나 절대 반환값이 없다는 의미 function generateError(message: string, code: number): never{ throw {message, errorCode: code}; } generateError('An error occured', 500); tsc --watch tsc -W 타입스크립트 파일을 지켜보면서(watch) 소스코드에 변화가 생기면 컴파일한다. tsc --init으로 tsconfig.json을 생성후에 tsc, tsc --watch, tsc -W 명령어로 폴더의 모든 타입스크립트 파일을 컴파일한다. tsconfig.json exclude : 컴파일에..

개발/TypeScript

[TypeScript] 매일매일 #2

enum 타입 const ADMIN = 0; const READ_ONLY = 1; const AUTHOR = 2; // JavaScript에선 이런식으로 role을 작성한다. // 상수를 따로 관리해줘야 하는 불편함 const person = { name: 'yu', age: 26, hobbies: ['game', 'sports'], role: ADMIN } enum 타입을 이용해서 작성하면 enum Role { ADMIN, READ_ONLY, AUTHOR } // ADMIN = 1, READ_ONLY = 2, AUTHOR = 3 // enum Role { ADMIN = 5, READ_ONLY = 10 } const person = { name: 'yu', age: 26, hobbies: ['game',..

개발/TypeScript

[TypeScript] 매일매일 #1

자바스크립트는 런타입에 타입이 결정되는 동적 타입 타입스크립트는 런타임전에 개발 단계에서 타입이 결정되는 정적 타입 브라우저는 자바스크립트만 이해할 수 있기 때문에 타입스크립트를 실행하려면 자바스크립트로 컴파일을 해야한다. 타입 추론(type reference) 타입스크립트는 스스로 타입을 추론한다. const number1 = 5; // number1의 타입은 5 let number2 = 2.5; // number2의 타입은 number // 따로 타입을 지정해 줄 필요가 없다, 하지만 변수를 먼저 선언하고 // 나중에 값을 할당하는 경우에는 지정하기도 한다. let number3: number; number3 = 5; 타입스크립트는 타입을 잘못 사용하고 있는지 확인하고 에러를 통해 알려준다. cons..

유승완
'개발/TypeScript' 카테고리의 글 목록