Language/Typescript
-
[Typescript] GenericLanguage/Typescript 2023. 1. 11. 22:23
Generic 제네릭은 선언 시점이 아닌 생성 시점에 타입이 정해진다. 이를 활용해, 하나의 타입만이 아닌 다양한 타입을 사용할 수 있도록 하는 기법이다. 한번의 선언으로 다양한 타입에 재사용이 가능하다는 장점이 있다. // Conbine Polymorphism, Generic, Class, Interface together // Let's make a API class like Localstorage API in browser // 제네릭을 클래스로 보내고, 클래스가 제네릭을 인터페이스로 보내고 // 인터페이스는 제네릭을 사용할 수 있다. interface SStorage { [key:string]: T } class Localstorage { private storage:SStorage = {} se..
-
[Typescript] ClassLanguage/Typescript 2023. 1. 11. 21:51
📌 참고 : https://poiemaweb.com/typescript-class 기본문법 ES6 클래스는 클래스 내부에 메소드만 선언할 수 있다. 즉 멤버변수(프로퍼티) 선언은 불가하고, 멤버함수(메소드)만 선언 가능하다. 멤버변수의 선언은 반드시 생성자 내부에서 클래스 프로퍼티를 선언하고 초기화 한다. // person.js class Person { constructor(name) { this.name = name } walk() { console.log(`${this.name} is walking.`) } } 하지만 Typescript 클래스는 클래스 몸체(내부)에 클래스 프로퍼티의 타입을 사전 선언하여야 한다. //person.ts class Person { name : string; const..
-
[Typescript] undefined 관련 error 처리 방법Language/Typescript 2023. 1. 6. 15:19
const getS3Data = async (filePath: string) => { //..... const getParmas = { Bucket: process.env.S3_BUCKET_NAME, Key: filePath, }; const data = await s3Client.send(new GetObjectCommand(getParams)); //... } s3에서 데이터를 가져오는 함수(위의 코드)를 작성하던 중 아래와 같은 오류 메시지가 발생했다. TS2322: Type 'string | undefined' is not assignable to type 'string'. Type 'undefined' is not assignable to type 'string'. 오류의 원인은 GetObjec..
-
[Typescript] typescript의 유용성, 기본적인 type 지정 방법Language/Typescript 2023. 1. 1. 18:20
1. Why use typescript 타입안정성이 좋아진다! 어떻게? 타입안정성이 주는 장점은 무엇인가? 코드를 실행하기 전에 런타임 에러가 날 수 있다는 것을 알 수 있다. 즉 모든 코드를 실행해보지 않고서는 그 코드가 오류가 없을 것이라는 보장이 없다. unit test 등등 여러 테스트를 거치긴하겠지만, 다른 오류도 아니고 타입에러 때문에 발생하는 오류를 잡기 위해 테스트에 리소스를 쏟는 것 보다 타입스크립트를 써서 코드 작성부터 타입에러 방지를 하는 것이 효율적일 것이다. 코드가 개발자의 의도와 다르게 작동하지 않도록 제어할 수 있다. 즉, 개발자에게 코드에 대한 제어권, control능력을 주게 된다. 작성하는 코드에 타입을 지정해준다는 것은 어떠한 의도를 가지고 코드 문서를 작성하는 세부 규..
-
Typescript 기본 세팅Language/Typescript 2022. 12. 26. 22:13
Typescript 기본 세팅 1. 시작 npm init-y 2. 필수 모듈 설치 로컬 환경에서만 사용하는 모듈은 -D 옵션을 추가하여 설치한다. @type/* : 자바스크립트 환경에서 구동되는 모듈을 TS 환경에서 사용하기 위해 내부 변수들과 함수들의 타입을 정의한 *.d.ts파일이 포함된 패키지도 함께 설치한다. { "name": "project_name", "version": "1.0.0", "description": "", "main": "server.js", "jest": { "setupFiles": [ "dotenv/config" ] }, "scripts": { "test": "DOTENV_CONFIG_PATH=.env.test jest --setupFiles=dotenv/config", "t..