본문 바로가기 메뉴 바로가기

I'm a Fig, Not a Pig

프로필사진
  • 글쓰기
  • 관리
  • 태그
  • 방명록
  • RSS

I'm a Fig, Not a Pig

검색하기 폼
  • 분류 전체보기 (219) N
    • Language (59)
      • JavaScript (59)
      • Python (0)
    • Client (55)
      • HTML (3)
      • CSS (11)
      • React.js (25)
      • TypeScript (8)
      • Next.js (8)
      • React Native (0)
    • Backend (4)
      • AWS (0)
    • Git&Github (17)
    • 코드잇 스프린트 (40)
      • Weekly paper (10)
      • Daily Quiz (30)
    • Toy Project (12)
      • Time to focus (12)
      • Chrome Extension (0)
    • Error (1)
    • Linux (0)
    • CS (14)
      • Computational Thinking (3)
      • C (5)
      • 네트워크 (1)
      • 운영체제 (1)
      • 리눅스 (0)
      • 컴퓨터구조 (2)
    • Online courses (4)
      • The Complete JS Course 2023 (1)
      • Coding apple (3)
    • Tips (2)
      • 보안 (2)
      • IT 상식 (5)
      • 취업 (0)
    • Daily (3) N
      • 서평 (1) N
      • 회고 (1)
      • 개발일지(Fig Notes) (0)
    • Design (0)
  • 방명록

2024/05 (12)
[TypeScript] keyof & typeof 연산자

keyof 연산자는 객체 타입으로부터 프로퍼티의 모든 key들을 String Literal Union 타입으로 추출하는 연산자이다.주의할 점은 keyof 연산자는 오직 타입에만 적용할 수 있는 연산자라는 점이다. 따라서 값과 함께 사용하려고 하면 오류가 발생한다. typeof 연산자는 자바스크립트에서 특정 값의 타입을 문자열로 반환하는 연산자이다. 다른 기능은 타입을 정의할 때 사용하면 특정 변수의 타입을 추론하는 기능도 가지고 있다. type Person = typeof person;// 결과// {name: string, age: number, location:string}const person = { name: "John", age: 25,};   이러한 특징을 이용해 keyof 연산자를 다음과..

Client/TypeScript 2024. 5. 31. 09:00
[Next.js] npm run start 에러 (Failed to start serverError: listen EADDRINUSE: address already in use :::3000)

npm run build 이후 npm run start 실행 시 Failed to start serverError: listen EADDRINUSE: address already in use :::3000 에러가 발생했다. 찾아보니 EADDRINUSE 에러는 포트 3000이 이미 사용 중이기 때문에 발생하는 오류라고한다.따라서 포트 3000을 사용 중인 프로세스를 종료하거나 다른 포트를 사용하도록 설정해야한다. 1. 포트 3000을 사용 중인 프로세스를 종료하기먼저 포트 3000을 사용중인 프로세스를 찾아야 한다. Windows: netstat -ano | findstr :3000macOS/Linux: lsof -i :3000나는 Windows를 사용하고 있어서 명령어를 치면 아래와 같이 뜬다. 다음으로..

Client/Next.js 2024. 5. 29. 12:17
[Git] 원격 브랜치를 추적(tracking) 하는 새로운 브랜치 checkout 하기(git checkout -t upstream/feature)

원격(remote) 브랜치인 uptream/feature 를 추적(track) 하는 새로운 브랜치를 생성하는 방법은 다음과 같다.git checkout --track -b feature origin/featuregit checkout -t upstream/feature 1. git checkout --track -b feature origin/feature : 새로운 로컬 브랜치 feature를 생성하고 origin/feature를 추적하는 명령어이다.2. git checkout -t upstream/feature : upstream/feature를 추적하는 동일한 이름의 로컬 브랜치를 자동으로 생성하는 명령어이다. 만약 로컬 브랜치에서 원격 브랜치의 이름과 해당 브랜치의 내용을 동일하게 로컬 브랜치로 ..

Git&Github 2024. 5. 28. 15:24
개발 처음 배웠을 때 끄적였던 공책 발견

HTML이랑 JavaScript 처음 배웠을 때 작성했던 노트 발견했다.이 때 대학다니면서 진로에 대한 고민을 많이했던 시기인데, 그러다 무작정 3학년 때 휴학을 하고 내가 하고 싶은게 무엇일지 찾아보다 개발을 접했는데 너무 재밌었다.생활코딩으로 시작해서 노마드 코더 챌린지, 유데미 강의 등등 여러가지를 해본 뒤 리액트로 혼자 토이 프로젝트를 해보고 깨달았다. 강의 100개 들어도 한 번 프로젝트 하는 것보다 못하다는 걸ㅋㅋㅋ 첫 토이프로젝트 때는 너무 재밌어서 눈뜨고 잠자기 전까지 코딩만 했었고 꿈에서도 코딩을 했다. 추억이군

Daily 2024. 5. 28. 13:07
[TypeScript] 타입스크립트의 배열

타입스크립트에서의 배열은 다음과 같이 정의할 수 있다.let numArr: number[] = [1, 2, 3]    문자열 배열 타입 정의만약 문자열을 담는 배열의 타입을 정의한다면 다음과 같이 하면 된다.let strArr: string[] = ["hello", "im", "winterlood"];    객체 배열 타입 정의객체를 담는 배열을 정의할 수 도 있다. 예시로 다음과 같은 객체 배열이 있다고 해보자.type Post = { title: string; content: string; author: { id: number; name: string; age: number; };};let posts: Post[] = [ { title: "첫 번째 게시글", con..

Client/TypeScript 2024. 5. 28. 09:00
[TypeScript] 인덱스 시그니쳐

공식문서를 보면 Index Signature에 대한 내용으로 다음과 같이 적혀있다. Index SignaturesSometimes you don’t know all the names of a type’s properties ahead of time, but you do know the shape of the values. In those cases you can use an index signature to describe the types of possible values. 쉽게 말해 인덱스 시그니쳐는 객체의 프로퍼티의 key과 value의 타입을 정해주는 것을 말한다. 인덱스 시그니쳐는 객체의 모든 프로퍼티가 특정 타입을 갖도록 강제하며, {[key : T] : U} 형식이다. 예제를 통해 살펴보자...

Client/TypeScript 2024. 5. 27. 09:00
[코드잇 스프린트] 12주차 위클리 페이퍼

1. JavaScript만 사용하는 것과 비교해 TypeScript를 사용하는 이유에 대해 설명해 주세요.타입 시스템은 크게 정적 타입 시스템과 동적 타입 시스템으로 나뉜다. 정적 타입 시스템은 코드 실행 전에 모든 변수의 타입을 고정적으로 결정하고 동적 타입 시스템은 코드를 실행하면서 유동적으로 변수의 타입을 결정한다. 정적 타입 시스템을 사용하는 언어에는 C나 Java 같은 엄격한 문법을 가진 언어들이 있고 동적 타입 시스템을 사용하는 언어에는 Python, JavaScript, Ruby와 같이 유연한 문법을 가진 언어들이 있다. JavaScript는 동적 타입 언어이다.배우기 쉽고 타입을 미리 설정하지 않아도 되지만, 실행 도중에 예상치 못한 타입이 들어와 타입 에러를 발생하는 경우가 있다. 또한 ..

코드잇 스프린트/Weekly paper 2024. 5. 25. 12:58
[TypeScript] TypeScript에서 클래스(Class) 사용하기

저저번주에 모던 JS 스터디 하면서 클래스에 대해 공부했는데, 이번에는 TypeScript를 공부하며 또 만나게 되었다. 아직 class에 익숙하진 않지만, 알아갈 수록 유용하다고 생각된다. 오늘은 TypeScript에서 클래스를 사용하는 방법에 대해 살펴 볼 예정이다. 우선 JS 에서의 클래스를 먼저 간단하게 짚고가자.  1. JS Class클래스 선언class Student { } 클래스는 객체를 생성하는 틀이다. 붕어빵이 객체라면 붕어빵 기계는 클래스라고 볼 수 있다.   필드 선언class Student { // 필드 name; age; grade;}   생성자 선언생성자는 특수한 메서드로, 실질적으로 객체를 생성하는 함수이다.class Student { // 필드 name; a..

Client/TypeScript 2024. 5. 25. 09:00
[TypeScript] any 타입과 unknown 타입의 차이점

이틀 전부터 타입스크립트를 공부 중인데 any 타입이랑 unknown 타입이 헷갈린다. 둘 다 변수에 어떤 타입의 값이든 할당할 수 있는 것 같아 비슷하게 느껴져, 오늘은 둘의 차이점을 공부해보려 한다.  any 타입 타입 계층도를 보면 unknonw은 전체 집합이고 any는 치트키 같은 역할이다.any 타입이 치트키인 이유는 any 타입은 타입스크립트에서만 제공되는 특별한 타입으로 타입 검사를 받지 않기 때문이다. 예를 들어 다음과 같이 범용적으로 사용되어야 하는 변수가 있다고 가정해 보자.let anyVar = 10;anyVar = "hello"; // 오류 발생!변수 anyVar는 number 타입의 값 10으로 초기화 되었지만 이후 string 타입의 값 "hello"를 저장해야 한다. 타입스크립..

Client/TypeScript 2024. 5. 23. 11:50
[데일리 퀴즈] 0522 데일리 퀴즈

1.  type, interface 차이점type-alias는 모든 타입을 선언할 때 사용될 수 있고, interface는 객체에 대한 타입을 선언할 때 사용될 수 있다. 둘 다 객체에 대한 타입을 선언하는 데 사용될 수 있는데, 확장 측면에서 사용 용도가 달라진다.  확장이 불가능한 타입을 선언하려면 type-alias를 사용하면 되고, 확장이 가능한 타입을 선언하려면 선언 병합이 가능한 interface를 사용하면 된다. 2.  아래 두 타입의 부모,자식 관계와 마지막 문장에 있는 두 객체 타입간의 호환성을 설명해주세요type Book = { name: string; price: number;};type ProgrammingBook = { name: string; price: number; ..

코드잇 스프린트/Daily Quiz 2024. 5. 22. 12:31
이전 1 2 다음
이전 다음
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
  • 유사배열객체
  • html
  • hydrationboundary
  • 비동기
  • Git
  • Next.js
  • tanstackquery
  • 중급 프로젝트
  • CSS
  • 코드잇스프린트
  • javascript
  • 동기
  • 리액트
  • arguments
  • js
  • currentTarget
  • innerhtml
  • 제어 컴포넌트
  • map
  • 객체
  • 취업까지달린다
  • GitHub
  • 코드잇 스프린트
  • 스프린트프론트엔드6기
  • rest parameter
  • 비제어 컴포넌트
  • 프론트엔드
  • react
  • Target
  • 배열
more
«   2024/05   »
일 월 화 수 목 금 토
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함

Blog is powered by Tistory / Designed by Tistory

티스토리툴바