본문 바로가기
728x90
반응형

Language19

[TypeScript] object vs. Object 차이점 간단하게 변수에 객체를 넣고 싶었다. 그런데 객체에 object와 Object가 있다는 것을 알았다. 문제점 text라는 변수에 object[]라는 타입을 지정했다. 일부러 string을 넣어보니 바로 타입 에러가 표시되어 잘못 지정해줬다는 것을 개발자에게 알려준다. 이럴 경우 코드 작성시 생길 수 있는 에러 확률을 현저히 낮춰준다. 하지만 Object[]를 주면 오류가 뜨지 않는다. 이럴경우 매우 당황스러운 순간이다. 어째서 object는 잡아주고 Object는 잡아주지 않는 것일까? 차이점 object의 경우 원시형이 아닌 모든 값들을 받을 수 있다. 즉, string, number, boolean, symbol, null, undefined가 들어오면 type 에러를 발생한다는 것이다. 하지만 원시.. 2022. 8. 29.
[JS/문법] 비구조화 할당(구조분해) const object = { a: 1, b: 2 }; const { a, b } = object; 리액트를 배우면서 가장 신기했던 문법이 비구조화 할당 문법이었습니다. 비구조화 할당 문법을 사용하면 객체 안에 있는 값을 추출해서 변수 혹은 상수로 바로 선언해줄 수 있습니다 ❗️ const object = { a: 1, b: 2 }; function print(props) { console.log(props.a); // 1 console.log(props['b']); // 2 } 본래 비구조화 할당 문법을 몰랐을때는 위 코드처럼 파라미터를 사용했습니다. 인제 객체에 접근해서 값을 가져올때 . 혹은 [ ] 대신 비구조화 할당으로 바로 가져올 수 있습니다. const object = { a: 1, b: 2 .. 2022. 8. 1.
[TypeScript] Property 'user' does not exist on type 'Session & Partial<SessionData>'. ts(2339) 해결 세션을 이용해서 로그인을 준비하던 중 에러가 발생했습니다. Property 'user' does not exist on type 'Sesson & Partial'. ts(2339) 아무리 구글링 해봐도 뾰족한 수가 보이지 않아 낙담하던 그때..! https://icecokel.tistory.com/17 TypeScript, Express-session 을 이용한 로그인 처리 (2) 안녕하세요. 오늘은 저번 포스팅에 이어서 TypeScript 환경에서의 Express-session 로그인 처리 포스팅을 진행하겠습니다. 작업환경 express-session, SessionData 수정 로그인처리 1. 작업환경 운영체제 Windows.. icecokel.tistory.com 이 분의 게시물을 보고 해결 😇 이.. 2022. 7. 1.
[TypeScript] Optional Chaining - 옵셔널 체이닝 옵셔널 체이닝이란 null이나 nudefind인 값이 반환되면, 즉시 중단하고 undefined를 반환하는 문법입니다. 아마도 객체의 내부를 사용할 때 Object is possibly 'null'.ts(2531) 이라는 오류를 접하게 되었습니다. null 값 처리 중 가장 나은 방법이 옵셔널 체이닝이라는 것을 알게 되었어요. 처음 보는 문법이라 정리해보았습니다! const plusRoute = groupRouter?.route 옵셔널 체이닝은 객체 뒤에 ?를 사용하면 됩니다. 그렇다면 ?는 무슨 역할을 해주는 걸까요? 처음엔 선택적 프로퍼티라고 생각했어요. 하지만..! 선택적 프로퍼티랑 아예 다르더라고요. (당연함..이름도 다름 ㅎ..) const plusRoute = groupRouter ? grou.. 2022. 6. 7.
[ES6] var, let, const 차이점 var var name = 'nime'; console.log(name); 자바스크립트에서 변수를 선언할 때 사용하는 방법 중 하나이다. var를 사용했을 때 발생하는 문제점 var num = 10; if (num == 10) { var num = 20; console.log("num in if : ", num); // num in if : 20 } console.log(num); // 20 하지만 var를 사용하여 변수를 선언해주면 위 코드처럼 if문 안에서 변경이 된 게 밖에서도 영향을 미친다. ES6부터는 구분하기 위해 scope라는 개념이 추가된 let이 등장하게 된다. 📌 scope(유효범위)란? 변수에 접근할 수 있는 범위이다. 전역 스코프는 전역에 선역되어있는 어느 곳이든 해당 변수에 접근 .. 2022. 1. 31.
[Python] for in 반복문, range, enumerate 반복문으로 쓰이는 for문은 상당히 중요하고 유용하게 쓰인다. 1. for in 반복문 num = [1,2,3,4] for i in num: print(i) # 출력 : 1,2,3,4 가장 기본적인 반복문의 형태로 리스트, 배열, 딕셔너리 등 안에 있는 값들을 차례대로 꺼낼 수 있다. 2. for in range() num = 3 for i in range(num): print(i) #출력 : 0,1,2 for i in range(1,10): print(i) #출력 : 1,2,3,4,5,6,7,8,9 for i in range(0,10,5) print(i) #출력 : 0,5 range() 함수를 사용하면 숫자의 범위를 정해 반목문을 실행시킬 수 있다. 3. for in enumerate() num = [.. 2022. 1. 27.
[Python] sys.stdin.readline() 알고리즘 문제를 풀던 중 시간초과로 애를 먹고 있었다. 다른 분들의 풀이를 보니 input() 대신에 sys.stdin.readline()를 사용하여 시간초과를 해결 할 수 있다는 것을 알게 되었다. 우선 파이썬 공식 문서를 확인해보면 1. stdin is used for all interactive input (including calls to input()); 2. stdout is used for the output of print() and > - expression statements and for the prompts of input(); 3. The interpreter’s own prompts and its error messages go to stderr. 즉, input()은 raw_i.. 2022. 1. 8.
iOS Swift 코코아팟 설치 + 라이브러리 Tabman 사용하기 오픈소스를 사용하고 싶은데 어떻게 사용해야할지 몰라 헤매다가 코코아팟을 이용해서 iOS에 라이브러리를 사용할 수 있다는 것을 알게 되었습니다. 📌 코코아팟 설치하기 1. 터미널에 설치 코드 입력하기 sudo gem install cocoapods 터미널에 설치 코드를 입력한 후 맥 암호를 입력하면 바로 코코아팟 설치가 됩니다. 이렇게 나왔다면 성공! 2. 터미널에 프로젝트 경로 설정하기 + pod 파일 생성 후 열기 터미널 명령어인 cd를 이용해서 프로젝트에 들어가주세요. pod init pod 파일을 생성해줍니다. 앗.. Xcode 프로젝트를 먼저 생성해주고 해야하네요. 빈 프로젝트에는 생성이 안됩니다! 터미널 명령어인 cd - 를 입력하여 뒤로 가서 Xcode 프로젝트가 있는 곳을 경로를 재설정해줍니.. 2021. 9. 8.
예제) 사각형 넓이 구하기 조건: 사각형의 밑변 width와 높이 height를 input 함수를 사용하여 키보드로 부터 입력받아, 사각형의 넓이를 계산하는 calRectangleArea함수를 작성하시오. 조건, while문을 이용하여 반복하여 계산하게 하고 종료 조건은 입력된 width가 -1이면 반복문을 빠져 나옵니다. 1 2 3 4 5 6 7 8 9 def calRectangleArea(width, height): return width * height while(True): width = int(input("너비를 입력하세요 : ")) if width == -1: break height = int(input("높이를 입력하세요 : ")) print("사격형의 넓이 : ", calRectangleArea(width, heig.. 2021. 4. 2.
728x90
반응형