keyof 제약 조건 key값을 넘겨줄 때 사용된다. 따라서 U extends T를 사용하면 된다. 제네릭 class 제네릭 class를 사용하는 이유 유연하게 재활용이 가능하다. textStorage 대신 numberStorage를 활용할 때 제네릭 class를 사용할 수 있다. 제네릭 유틸리티 타입(Readonly 포함) 종종 사용된다. (typescript에만 존재한다.) 제네릭 타입과 유니언 타입의 차이 완전 세분화 할 것이냐, 아니면 느슨하게 허용하면서 type을 체크해줄 것이냐 차이가 있다. 물론 느슨하다고 해서 typescript의 장점을 버리는 것이 아니다. 모든 함수 호출마다 다른 타입을 아주 확실히 지정해야하는
예시를 위해 배열을 생성합니다. 초보자가 typescript를 사용하면서 에러를 가장 많이 보는 경우가 제네릭 타입에 대한 에러입니다. (결론.. 중요하다.) 제네릭 클래스와 함수 만들기 ex) 합쳐진 객체의 에러를 막는 방법 제약 조건 작업하기 T, U 제약 조건 설정해보자. extends를 통해서 object가 와야하고 object 내 type은 상관이 없다. 하지만 무조건 object type 와야하기 때문에 30이라는 숫자는 에러를 발생시킨다.
interface에서는 public, private 사용할 수 없지만, readonly는 사용할 수 있습니다. interface 확장 class Person implements를 통해 여러개의 interface를 설정할 수 있지만 비효율적입니다. 이런 경우 Greetable extends Named를 통해 interface를 확장하고 class Person에 implements Greetable만 적어줍니다. ex) interface 확장 전 ex) interface 확장 사용 class 상속을 사용하는 경우 하나의 class만 상속할 수 있고, 다수의 class로 부터 상속할 수 없습니다. 하지만 interface는 여러 개 확장할 수 있죠. 함수 type으로서 interface
인터페이스는 객체의 구조를 설명합니다. Interface 키워드를 통해 생성할 수 있습니다. Interface 생성자는 첫 글자를 대문자로 하는 관례가 있다. 그리고 Interface는 사용자 정의 type으로 사용할 뿐입니다. 따라서 구체적인 값을 추가할 수 없고, type만 설정합니다. Interface를 type으로 바꿔도 작동합니다. 그럼 왜 Interface를 사용할까요? Interface는 객체의 type만 설정할 수 있습니다. 작업 중 class 보다 Interface를 많이 사용합니다. (약간의 약속 아닌 약속 느낌..) 또 다른 예시의 Interface class implements를 통해 Interface를 확장할 수 있습니다. Interface의 가장 큰 장점은 class extends와 달리, 여러개를 추가할 수 있습니다. 그래서 왜 Interface를 사용할까? class type 부족한 부분이 있을 때 Interface를
기존 javascript와 달리 typescript를 시작하면서 Interface와 class의 차이점에 대한 이해가 부족해 Interface와 class의 차이를 먼저 알아보고 시작하려고 합니다. class부분을 진행하면서 어려움을 겪어서.. Interface > ES6가 지원하지 않는 typescript 특징입니다. Interface는 compile후 사라지는 특징이 있습니다. Interface는 선언만 존재하고, 변수와 메서드 선언할 수 있지만 접근 제한자 설정이 불가능합니다. (type 체크 목적으로 Interface를 사용합니다.) class > ES6 Javascript에서 도입됐습니다. class 간 관계를 추가해 코드 중복을 최소화하는 개발 방식입니다. class는 객체지향 프로그래밍으로 볼 수 있고, class 간 관계는 상속이나 포함 관계를 추가합니다. (객체지향 프로그래밍은 따로 글을 작성해보겠습니다.) Interface 예시 P
개인 및 공용 Access Department employee: string[] = []; 위 코드에서 private employee로 변경할 경우 accounting.employee[2]는 막힌다. 따라서 addEmployee를 통해서만 배열에 키워드를 추가할 수 있다. 약식 초기화 Department에서 type설정이 아닌, constructor에서 type를 설정해 사용할 수 있다. 읽기 전용 (readonly) constructor에서 id값을 readonly로 설정해둔 상태다. 따라서 addEmployee에서 this.id를 통해 d2를 추가하고 싶어도 readonly에서는 추가할 수 없다. 요약 typescript에서 class는 Javascript 객체에 대한 청사진입니다. class 속성이란
Core Types numbers: 정수, 실수 구분없이 모두 숫자형입니다. string: '', "", `` 사용할 수 있다. (백틱을 사용 한 경우 템플릿 리터럴을 작성할 수 있습니다.) boolean: true, false 특히 if 문에서 작업할 때 중요합니다. ex) 잘못된 예시 ex) typescript를 적용한 예시 type을 적용했기 때문에, tsc를 할 수 없고, 에러를 반환한다. 따라서 number1 부분을 string에서 number로 바꿔줘야 한다. typescript를 활용할 때, type에 대해서 명확히 알고 진행해야 한다. ex) boolean을 활용한 typescript 주의점은 type을 지정해줘도, 문자열과 숫자를 더하면 문자열이 나오기 때문에, 분리해서 코드를 작성해야 한다. typescript에서 선언문에 type을 지정해주는 건 좋은 방법이 아니다. (고정 된 사용값에 type지정은 문제가 없지
JavaScript 장점을 살리고, 단점을 보완하기 위해서 사용합니다. ex) 단순 예시 위의 문제를 TypeScript를 통해 해결할 수 있습니다. 시작 방법 (공식 문서, https://www.typescriptlang.org/) > 타입스크립트는 프로그래밍 언어지만 자바스크립트로 컴파일하는 컴파일러가 있기 때문에 작동하는 프로그래밍 언어입니다. (컴파일러를 설치해 tsc 커맨드를 실행할 수 있습니다.) 우선 타입스크립트를 사용하면 타입을 이용해 작동 방식에 대해 명시적이어야합니다. 따라서 예상하지 못한 많은 에러를 피할 수 있습니다.
간단하게 ORM에 대해서 알아보고, Express, Node.js, TypeScript, Sequelize 세팅에 대해서 글을 작성해보겠습니다. ORM이란? Object Relational Mapping 객체와 관계형 데이터베이스의 데이터를 자동으로 연결해주는 것을 말합니다. 객체를 통해 간접적으로 데이터베이스 데이터를 다룹니다. 왜 사용할까? 객체 지향적인 코드로 더 직관적이고 Logic에 더 집중할 수 있습니다. 재사용 및 유지보수의 편리성 증가 Sequelize CLI 설치 및 시작 위 명령어를 통해 쉽게 설치할 수 있습니다. init을 통해 시작할 수 있고, config, models, migrations, seeders 폴더가 생성됩니다. (위 4개 폴더는 직접 생성하는 게 아니라, init을 통해 생성합니다.) 기타 설치가 필요한 Npm 위 모듈 설치를 통해 config.ts를 다루