본문 바로가기

typeScript

(46)
타입스크립트 타입 호환성과 타입 계층 트리 타입스크립트의 타입 계층을 통해 타입 호환성을 알아봅시다. 1. 타입 호환성은 뭔가요? 타입 호환성 Documentation - Type Compatibility How type-checking works in TypeScript www.typescriptlang.org 타입스크립트에는 다양한 타입이 존재하는데, 어떠한 타입 변수에 다른 타입 데이터(값)이 할당 가능하면 타입이 호환된다고 합니다. 타입스크립트는, 구조적 타이핑을 허용하기에, 클래스 명이 다르면 하위 구조가 완전 같아도 호환이 불가능한 자바의 명목 타이핑과 다른 동작을 보여줍니다. 기본적으로 타입 호환성은 업캐스팅 가능 여부로 판단합니다. 이 게시물에서는 타입스크립트 기본 타입 간의 계층 구조를 이해하며, 타입 호환성을 알아봅니다. 아래..
타입스크립트(typescript)로 배우는 함수형 프로그래밍 - 모나드(monad) https://dev.to/gcanti/getting-started-with-fp-ts-applicative-1kb3 지금까지의 내용 : Program f Program g Composition pure pure g ∘ f effectful pure (unary) lift(g) ∘ f where liftA1 = lift Functor A타입의 인스턴스 a와 T=>F 시그니처의 함수(Constructor), A=>B 시그니처의 함수 f를 다루었다. 아래 fa(F)는 constructor(a)를 암시한다. 즉 A타입 인스턴스 하나와 생성자(effectful program) 하나, 순수 함수 하나를 이용하여 F타입의 인스턴스 하나(F 를 다른 타입(F)으로 전환하는 이야기였다. lift: (f: (a: A) ..
타입스크립트의 타입 불건전성에 대하여 2 : 공식 예제 코드 살펴보기 https://www.typescriptlang.org/play?strictFunctionTypes=false#example/soundness TS Playground - An online editor for exploring TypeScript and JavaScript The Playground lets you write TypeScript or JavaScript online in a safe and sharable way. www.typescriptlang.org 타입 이론에 대한 배경 지식이 없으면, "건전성"이라는 타입 시스템의 개념에 익숙하지 않을 것입니다. 건전성은 컴파일러가 런타임 값이 컴파일 타임과 런타임에 같은 타입임을 보장할 수 있다는 것을 의미합니다. 처음부터 정적 언어로 설계된 ..
타입스크립트의 타입 불건전성에 대하여 1 : 타입시스템의 한계 해당 페이지를 번역 및 요약함. https://effectivetypescript.com/2021/05/06/unsoundness/ Effective TypeScript › 62 Specific Ways to Improve Your TypeScript Effective TypeScript: 62 Specific Ways to Improve Your TypeScript effectivetypescript.com 2부 : 타입스크립트의 타입 불건전성에 대하여 2 : 공식 예제 코드 살펴보기 (tistory.com) 타입스크립트의 타입 불건전성에 대하여 2 : 공식 예제 코드 살펴보기 https://www.typescriptlang.org/play?strictFunctionTypes=false#example/..
Ad hoc polymophism(애드훅 다형성) with typescript 다형성의 종류(더있긴 하지만 주로 만나는것) 서브타입 다형성 : 상속,구현 (할당 가능) 타입명이 공통 슈퍼클래스/인터페이스를 상속/구현한 인스턴스들을 의미. 구현은 각각 파라미터 다형성 : 제네릭 (타입 파라미터 이용 다형성) (파라미터) 타입명이 모든 타입을 나타낼 수 있음을 의미. 구현은 하나 애드훅 다형성 : 메소드 / 함수 오버로딩 (타입 클래스) 구현은 각각 타입스크립트를 쓰는 이유 자바스크립트로 객체 지향 하기 위해서? 핵심이 인터페이스인 이유? 자바스크립트 💔 OOP 리액트 hooks가 나온 이유? OOP보다는 es3로 돌아간 듯한 느낌을 주는 이유? So, Why OOP? interface통해 사용하는 곳을 바꾸지 않고 기능을 추가할 수 있음. 사용하는 곳의 if를 없앤다. 자바에서는 서..
The constrained identity function : Record Type의 키타입 정의 생략. TLDR : CIF와 레코드 타입의 키타입 정의를 피하자. Typescript를 쓰다보면 똑같은 타입을 반복해서 작성하는 거지같은 짓을 많이 본다. 잘못된 타입을 여러곳에서 여러 사람들이 다른 이름으로 쓰는 것도 많이 보게된다. 타입 관리도 비용이다. How to write a Constrained Identity Function (CIF) in TypeScript (kentcdodds.com) How to write a Constrained Identity Function (CIF) in TypeScript A handy advanced TypeScript pattern to increase your productivity. kentcdodds.com 해당 게시물의 요약본이다. 문제점 const ope..
타입스크립트 의존성 주입, 제어의 역전 with IOC 컨테이너 타입스크립트 사용 시 IOC 컨테이너가 인터페이스 기반으로 의존성을 주입할 수 있도록 해보자. Typescript DI의 한계 타입스크립트의 Type, Interface는 JS로 변환되면 삭제된다 런타임에 정보를 줄 수없다. 해당 개념이 자바스크립트에 없기 때문 NestJS / TypeGraphQL 같은 프레임워크의 예제는 구체적인 Class를 주입한다 // TypegraphQL 예제: AddRecipeInput라는 구체적인 클래스를 직접 명시함 // 만약 Java였으면 IADDRecepeInput이 가능 @Resolver() class RecipeResolver { // ... @Mutation() addRecipe(@Arg("data") newRecipeData: AddRecipeInput, @Ctx..
NestJs 관련 학습 컨텐츠 소개 NestJS - A progressive Node.js framework NestJS - A progressive Node.js framework NestJS is a framework for building efficient, scalable Node.js web applications. It uses modern JavaScript, is built with TypeScript and combines elements of OOP (Object Oriented Progamming), FP (Functional Programming), and FRP (Functional Reactive Progra nestjs.com NestJs 핵심 학습을 위한 컨텐츠를 소개한다. 원래는 정리 및 요약 글을 작성하는 ..