핸드북에는 유니온(Union) 타입이란 두 타입의 합집합을 의미한다고 (&) 써있고 교차(Intersection) 타입이란 아래와 같이 타입이 2가지 이상일 경우에 교집합(교차)인 경우의 속성만 보장해주는 특성을 의미합니다. 라고 써있는데.. 강의에서는 유니온이 | 이거고 인터섹션이 & 이거라고 하셔서.. 어떤게 맞는건가요? 갑자기 너무 헷갈리네요요 제가 이해를 잘못하고있는건가요..?
안녕하세요. 1. 저는 매개변수에 빨간물결은뜨는데 노란색이 안뜨는데 어떻게 해야하나요? format on Save는 껐습니다. 2. 그리고 다른질문이있는데 원래 format on Save를 끄기전에 vscode에서 프리티어가 코드를 정리해줬는데 js는 적용이 되고 ts파일은 적용이 안되더라구요. 왜 ts는 프리티어 적용이 안되나요?
실습하다가 위와 같은 에러가 세미콜론 끝에서 계속 떠서 검색해보니까 prettier 2.0이상 부터 endOfLine 옵션 default가 auto'에서 'lf'변경되면서 뜨는것 같습니다! 강제로 아래와 같이 설정해주면 안뜨네요. .eslintrc.js 파일 내 아래와 같이 추가설정 rules: { ' prettier/prettier ' : [ ' error ' , { endOfLine: ' auto ' }
선생님 우선 새해 복 많이 받으세요. ^^ 강의 감사하게 잘 듣고 있습니다. 다름이 아니라 질문이 있어서요... 마지막에 getShoppingItemOption('name')가 의미하는게 어떤건지 이해가 잘 안가네요 ㅠㅠ string이라는 타입을 반환하는 건가요? 만약 타입을 반환하는거라면 이게 어떤 의미인지, 어떤 방식으로 사용되는지 잘 모르겠습니다. 그리고 타입스크립트의 장점이 미리 타입을 추론할 수 있어서 오류를 줄일 수 있다는 점인데 제네릭을 사용하면 타입을 유동적으로 나중에 선언을 해주는 방식이라고 이해를 했는데 이러면 타입스크립트를 쓰는 의미가 줄어들지 않나요? 아무값이나 넣고 나중에 타입을 선언하니까...
영상을 여러 번 돌려봤는데 너무 헷갈려서요 제가 제대로 이해한 게 맞는지 확인해주셨으면 합니다. 제가 정리한 내용은 다음과 같습니다. ㅡㅡ 현재 스크롤 상태를 나타내는 scrollState의 기본값은 false이다. 스크롤 이벤트가 실행되면 clearTimeout이 먼저 작동한다. clearTimeout은 setTimeout의 반환값을 매개변수로 하여 setTimeout을 취소시키는 함수이다. 지금은 setTimeout이 실행되지 않았으니 건너뛰고 다음 if문으로 가자. "!(self.scrollState=false)= true", 즉 if(true){} 이므로 if문이 실행된다. running 클래스가 붙어 이제 애니메이션이 작동된다. 다음으로 setTimeout 함수로 가보자. setTimeout은 항상 숫자를 리턴하기 때문에 scrollState는 값을 가지게 되어 true가 된다. setTimeout 안의 내용들은 0.5초 후에 실행되는데 실행되기도 전에 스크롤 이벤트 갱신과 함께 clearTimeout으로 인해 실행되지 못한다. 이제 if문으로 넘어가는데 scrollState가 true이므로 if(!true), 즉, if(false)가 되어 if 문이 실행되지 않는다. 그리고 setTimeout으로 넘어가면 마찬가지로 리턴값을 받아 여전히 true이고, settimeout은 실행되지 않는다. 이렇게 반복되다가 마지막 스크롤일 때 setTimeout이 드디어 실행된다. 왜냐하면 더 이상 스크롤 이벤트가 일어나지 않아 clearTimeout이 동작하지 않기 때문이다. 비로소 scrollstate는 false가 되고 running 클래스는 제거된다.
안녕하세요 수강 중 궁금한 사항 질문드립니다~ 질문1) FormView.js 파일 아래 코드에서 import View from './View.js' ; const tag = '[FormView]' ; const FormView = Object . create ( View ); // 객체를 생성함 FormView . setup = function ( el ) { // el 받아서 내부적으로 속성으로 갖게할꺼임 this . init ( el ) this . inputEl = el . querySelector ( '[type=text]' ) this . resetEl = el . querySelector ( '[type=reset]' ) this . showResetBtn ( false ); // 숨길꺼니깐 false로 넘겨줌 } const FormView = Object.create(View) 로 객체?를 생성 후 여기서 this로 메서드를 추가하셨는데 혹시 그냥 View.init(el) 이런식으로 하면 안되는건지 질문드립니다! 질문2) View.js 에서 throw el 은 어떤 역할인건지 궁금합니다.. 그럼 답변부탁드릴게요 감사합니당
안녕하세요. 라우트를 적용해서 netlify로 배포를 해봤었는데 로컬환경에서는 /jobs 이렇게 주소창에 적으면 이동이 되는데 배포된 사이트에서는 꼭 router-link 클릭으로만 이동이 가능하던데 왜 이렇게 되는건지 궁금하고 주소창에 적어서도 이동이 가능하게 하려면 어떻게 해야하는지 궁금합니다!
안녕하세요? 좋은강의를 무료로 공개해 주셔서 감사한 마음으로 잘 듣고있습니다! 공부하다 map, filter, reduce에 비해 group_by, count_by함수는 좋다는 느낌이 들지 않아서 답답함을 해소할 수 있을까 싶어 질문 드립니다. 제가 그냥 생각해 봤을때는 group_by를 통해 멋지게 그룹핑을 했다면 그 결과를 reduce와 같은 함수를 이용해서 집계를 하는게 좋다고 생각을합니다. 예를들어서 다음과 같이 동작했으면 좋겠습니다. _go( [{a:1, b:1}, {a:2, b:2}, {a:3, b:1}, {a:4, b:3}], list => _group_by(list, obj=>obj.b), grouped => _group_reduce(grouped, (a_sum, obj)=>a_sum+obj.a, 0), console.log, ) // 결과 { '1': 4, '2': 2, '3': 4, } 이런 저의 바람과는 달리 카운팅 이라는 단순한 동작을 위해서도 새롭게 'count_by함수를 만들어 낸다'는점이 앞에서 배운 '함수형'이라는 느낌이 나지 않는거 같습니다. 이렇게 된다면 위의 예제와 같이 group_by된 결과에서 a의 값을뽑아 모두 더하는 작업을 하려면 '_group_by_add_a'와 같은 함수를 만들어야 하고, 또 다른 작업을 하려면 또 새롭게 무언가를 만들어내야 할 거 같습니다. 그리고 map, filter, reduce등은 array like를 만들어 내고 이 결과는 go를통해 계속하여 연결해 쓸 수 있는 느낌이었지만, group_by, count_by는 객체를 리턴해 버려서 더이상의 진행은 없는 느낌이 듭니다. (물론 Object.values후 flat 하면 다시 Array가 되긴 합니다만, 이렇게 해버리면 에초에 그룹으로 묶은 의미가 사라지는게 아닐까 합니다.) 위와같이 그룹에 대해서 또 다시 연산하는 무언가를 나중에 배우는 건가요? 아니면 함수형은 마지막을 만들어둔 집계함수로 마무리하는게 끝인 건가요? 그리고 return이 객체인 경우 그 이후 진행을 어떻게 하는게 좋은지도 궁금합니다. 감사합니다.