블로그

이정환 Winterlood

[마감되었습니다] 한 입 크기로 잘라먹는 타입스크립트 사전 등록 이벤트

안녕하세요 이정환입니다 😃강의 출시와 함께 이벤트가 마감되었습니다.관심가져주시고 신청해주신 800여분의 여러분께 진심으로 감사드립니다.강의는 아래 링크로 보러가실 수 있습니다(현재 얼리버드 30% 할인 중입니다)https://inf.run/9ZRN 강의 소개유튜브 영상으로 보기한 입 크기로 잘라먹는 시리즈의 2번째 강의 한 입 크기로 잘라먹는 타입스크립트는배워도 배워도 자꾸만 헷갈리는 타입스크립트를 개념 이해와 함께 제대로 배워보는 강의입니다.복습을 위한 핸드북 제공강의를 들으면서 함께 보시거나, 강의 수강 이후 복습하시기 용이하도록강의 내용과 100% 일치하는 핸드북을 제공합니다.커리큘럼 소개🌱 Section 1. 타입스크립트 개론기술을 잘 이해하려면 그것이 어떤 배경에서 탄생했는지 알 필요가 있습니다.1섹션 에서는 타입스크립트의 탄생 배경을 살펴보며 타입스크립트가 해결하고자 했던 문제가 무엇이고 타입스크립트가 어떤 특징을 가지고 있는지 자세히 살펴봅니다.🌱 Section 2 ~ 3. 타입스크립트 기초 다지기가장 기본적인 타입스크립트의 문법을 살펴봅니다.동시에 타입스크립트가 말하는 타입이란 정확히 무엇인지그리고 타입들이 서로 어떤 관계를 맺고 어떻게 상호작용하는지 살펴봅니다.🌱 Section 4 ~ 6. 다양한 타입스크립트 문법 살펴보기함수 타입 정의, 함수 오버로딩, 인터페이스, 클래스 등타입스크립트의 다양한 기능과 문법을 살펴봅니다.🌱 Section 7 ~ 9. 마법사 처럼 타입을 직접 조작하기타입스크립트의 가장 독특하면서도 강력한 기능인 타입 조작 기능에 대해 살펴봅니다.제네릭, 인덱스드 엑세스 타입, 맵드 타입, Keyof 연산자, 조건부 타입 등아주 다양한 타입스크립트의 타입 조작 문법을 살펴봅니다.🌱 Section 10. 유틸리티 타입 이용하기타입스크립트가 기본적으로 제공하는 여러가지 유틸리티 타입들에 대해 살펴봅니다.유틸리티 타입을 지금까지 배운 지식을 이용해 직접 구현 해봅니다.🌱 Section 11. 리액트에서 타입스크립트 사용하기(보너스)이대로 끝나면 아쉽죠? 그래서 보너스 섹션으로 준비했습니다.아주 간단한 투두 리스트를 함께 만들어보며리액트 프로젝트에 타입스크립트를 적용하는 방법에 대해 살펴봅니다.닫는 말마지막으로 신규 강의를 끝까지 마무리할 수 있도록 계속해서 응원해주신기존 수강생 분들과 독자 분들 그리고 주변 지인 분들께 모두 감사드립니다.또 이 글을 보고 관심을 가져주신 모든 인프런 유저 여러분께도 감사드립니다.

프론트엔드타입스크립트프론트엔드자바스크립트typescriptjavascript

자바스크립트 그리고 소프트웨어 개발

저는 "리액트 훅" 강의를 만든 아저씨입니다. 자바스크립트가 이렇게 강력해졌다는 사실에 감탄했습니다. 그리고 제 생각을 옮겨보려고 합니다. 어쩔 수 없이 제 나이와 인터넷 역사가 나옵니다. 꼰대로 보이기는 싫지만 변천사이니 옛날 얘기를 조금 하겠습니다. 김대중 정부는 전국 인터넷 망을 깔았습니다. 그 후 PC방이 생겼고 저는 이메일 주소라는 걸 만들었습니다. 이메일 주소 만들기가 한시간 수업 주제였습니다. 모든 기관과 기업은 홈페이지를 만들었습니다. 홈페이지는 단순했습니다. 그림 몇개 띄우고 정보글을 올렸습니다. 홈페이지와 소프트웨어는 다른 개념이었습니다. 소프트웨어는 사람들이 일을 할 때 쓰는 도구였습니다. 홈페이지는 홍보나 검색할 때 잠깐 보는 매체였습니다. 그런데 지금은 홈페이지가 곧 소프트웨어가 되었습니다. 스프링 프레임워크에서는 "클라우드 네이티브 소프트웨어" 라는 용어를 만들었습니다. 진정 클라우드에서 작동하는 소프트웨어입니다. 그냥 정보를 보던 웹 페이지가 일을 하는 도구인 소프트웨어를 완전히 대체했다는 이야기로 이해됩니다. 아직 저도 이런 얘기가 익숙하지 않습니다. 그래도 웹페이지에서 도는 게 로컬 컴퓨팅으로 돌리는 것 보다 뭔가 약하거나 느릴거라는 의심이 듭니다. 하지만 유명 데이터 분석 도구를 만드는 Palantir 가 만든 모든 소프트웨어는 웹에서 동작합니다. 이런 변화가 가능했던 이유는 자바스크립트의 발전 때문입니다.  리액트 강의를 만들면서 자바스크립트가 ui 프로그래밍을 엄청 쉽게 만들었다는 것에 감탄했습니다. 회사들은 소프트웨어를 점점 클라우드화 시키고 있습니다. 유지보수, 배포, 과금 처리가 쉽기 때문입니다. 앞으로 자바스크립트 발전이 더 기대됩니다.  

프론트엔드jsreactjavascript

자바스크립트, 더 이상 고민하지 마세요!

웹 페이지부터 서버, 애플리케이션까지 뚝-딱만들 수 있는 만능 프로그래밍 언어, 자바스크립트!​하나라도 해당되신다면 꼭! (。•̀ᴗ-)✧✓ 개발자로의 취업을 앞두신 분✓ 코딩/웹 개발을 시작하는 분✓ 자바스크립트의 개념을 탄탄히 쌓고 싶은 분✓ 다양한 프로젝트로 실력을 늘리고 싶은 분> 딱 맞는 자바스크립트 강의 보러 가기 <한 눈에 보는 추천강의 PICK내가 찾던 '그' JS 강의 살펴보기(1) JS Best 강의(2) 왕초보를 위한 강의(3) 한 번에! 올인원 강의(4) 가볍게 시작하는 무료 강의​"제일 많은 수강생에게 인정받은 강의로 시작하고 싶어요"(1) 인프런이 자신있게 소개하는 최고의 JavaScript 강의제대로 파는 자바스크립트 (JavaScript)✓ 평점 4.9점✓ 수업 80개 (13시간 3분)✓ 수강생 2,142명가장 최신의 자바스크립트에 대해 배우고 싶다면? 학습을 위해 복붙 가능한 실습 명령어+코드까지코어 자바스크립트✓ 평점 4.8점✓ 수업 8개 (1시간 57분)✓ 수강생 3,868명2시간만에 JS 핵심을 빠르게 배우고 this, 콜백, 스코프 등에 대한 동작원리 학습하기시나브로 자바스크립트✓ 평점 5.0점✓ 수업 118개 (19시간 56분)✓ 수강생 426명자바스크립트의 동작원리를 '제대로' 배우고 how가 아닌 why에 집중하는 정석 강의인프런에서만 만날 수 있는 맞춤형 자바스크립트 강의!왕초보를 위한 강의, 올인원 강의,그리고 가볍게 시작하는 무료 강의까지더 많은 강의로 나에게 딱 맞게 시작할 수 있으니까더 이상 고민하지 마세요! ദ്ദി˶ˊᵕˋ˵)>> 내게 맞는 강의 보러 가기 <<

웹 개발자바스크립트JS코딩프로그래밍언어웹개발프론트엔드javascript프로젝트개발자무료강의

Reclusive Newbie

[타입스크립트 코리아 : 기초 세미나 4강]의 TSLint 설정 업데이트 내용

해당 영상이 오래되어 TSLint 설정 방법이 현재와 다르게 변경되었습니다.TSLint는 더 이상 유지보수되지 않기 때문에 ESLint로 변경해야 합니다.ESLint는 TSLint보다 다양한 플러그인과 규칙을 제공하며, 더 나은 유지보수가 되고 있습니다.ESLint를 설치하려면 터미널에 간단한 명령어를 입력해야 합니다.ESLint 설치yarn add -D eslint @typescript-eslint/eslint-plugin @typescript-eslint/parser환경 설정환경 설정을 위해서는 공식 매뉴얼에서는 .cjs 확장자로 설정 파일을 만들 것을 권장합니다.그러나 이렇게 설정하면 Visual Studio Code에서 경고가 발생하는 경우가 있으니 .json 확장자로 설정하는 것이 좋습니다..eslintrc.json 파일을 만들고, 내용을 아래와 같이 작성하면 됩니다.$ touch .eslintrc.json{ "root": true, "parser": "@typescript-eslint/parser", "plugins": ["@typescript-eslint"], "ignorePatterns": ".eslintrc.js", "parserOptions": { "project": ["./tsconfig.json"] }, "extends": [ "eslint:recommended", "plugin:@typescript-eslint/recommended", "plugin:@typescript-eslint/recommended-requiring-type-checking", "plugin:@typescript-eslint/strict" ] }이렇게 하면 더 이상 TSLint를 사용하지 않아도 되며, ESLint의 다양한 기능을 활용할 수 있습니다. 

웹 개발tslinteslinttypescriptlintinglintjavascriptnode.js

Javascript 의 bind vs apply 차이와 용도?

1. bind 용도:-.함수의 this 값을 영구적으로 바꿉니다.-.새로운 함수를 반환합니다.-.나중에 실행할 함수를 미리 준비할 때 유용합니다. *.문법: const boundFn = originalFn.bind(thisArg, arg1, arg2, ...);*.특징:-.즉시 실행되지 않습니다.-.반환된 함수는 나중에 호출할 수 있습니다.-.부분 적용(partial application)을 구현할 수 있습니다. 예제:const person = { name: '한종인', greet: function(greeting) { console.log(`${greeting}, 저는 ${this.name}입니다.`); } }; const greetFn = person.greet.bind(person, '안녕하세요'); greetFn(); // "안녕하세요, 저는 한종인입니다. 2.apply 용도:this를 사용하여 메서드를 호출할 때, 메서드 내부에서 this가 올바르게 동작하도록 합니다.*.문법: const boundFn = originalFn.bind(thisArg, arg1, arg2, ...);*.특징:-.함수를 즉시 실행.-.두 번째 인자로 배열을 받습니다.예제:const person = { name: '한종인', greet: function(greeting, arg1) { console.log(`${greeting}, 저는 ${this.name}입니다${arg1}`); } }; person.greet.apply(person, ['안녕하세요', '!!']);// 바로 출력 => "안녕하세요, 저는 한종인입니다!!"*** 차이점*.실행 시점:-.bind: 새 함수를 반환하며, 즉시 실행되지 않습니다.-.apply: 함수를 즉시 실행합니다.*.인자 전달:-.bind: 인자를 개별적으로 전달합니다.-.apply: 인자를 배열로 전달합니다.*.반환 값:-.bind: 새로운 함수를 반환합니다.-.apply: 원본 함수의 실행 결과를 반환합니다.*.사용 상황:-.bind: 이벤트 리스너나 콜백 함수에서 this를 고정할 때 자주 사용됩니다.-.apply: 배열을 함수의 인자로 사용하거나, 함수를 즉시 실행하면서 this를 변경해야 할 때 사용됩니다. 바닐라 JS 사용 시 참조하시고, Happy coding...!!

웹 개발bindapplyjavascriptjs

하늘소녀

Do it! HTML + CSS 웹 표준의 정석 - 겨울 방학 맞이 기초 언어 스터디(3)

#지난주에 이어서...2주차에서 HTML과 CSS의 기본 문법을 익혔다면,3주차는 ‘화면을 어떻게 배치하고, 어떻게 반응하게 만들 것인가’에 집중하는 구간이었다. # CSS 박스 모델CSS 레이아웃의 시작이 되는 박스 모델을 다룬다.콘텐츠(content), 패딩(padding), 테두리(border), 마진(margin)요소 크기 계산 방식여백을 조절하는 속성기본 레이아웃 구성*“왜 생각한 크기랑 실제 화면 크기가 다를까?”에 대한 답이 박스 모델에 다 들어 있었다.CSS를 헷갈리게 만드는 거의 모든 문제의 출발점이라는 느낌.# 이미지와 그라데이션 효과로 배경 꾸미기배경을 다루는 CSS 속성들을 집중적으로 배운 장이다.배경색과 배경 범위배경 이미지 지정반복, 위치, 크기 설정그라데이션 효과 적용*단순히 색만 칠하는 게 아니라이미지 + 그라데이션을 조합해서 화면 분위기를 만드는 방법을 익힐 수 있었다.실무 감각이 조금씩 느껴지기 시작한 파트.# 반응형 웹과 미디어 쿼리이제 화면은 고정 크기가 아니라는 걸 전제로 학습이 진행된다.반응형 웹의 개념화면 크기에 따라 요소가 변하는 구조미디어 쿼리 기본 문법디바이스별 대응 방식*“PC에서 잘 보이던 화면이 왜 모바일에선 깨질까?”이 질문에 대한 명확한 해답을 주는 장이었다.CSS는 결국 조건에 따라 다르게 보여주는 언어라는 게 확 와닿았다.# 플렉스 박스 레이아웃으로 배치하기레이아웃의 판도를 바꾼 Flexbox 파트.flex 컨테이너와 아이템 개념정렬과 배치 방식반응형을 고려한 레이아웃 구성*예전처럼 float나 position에 의존하지 않고정렬과 배치를 훨씬 직관적으로 할 수 있다는 점이 인상적이었다.처음엔 속성이 많아 헷갈리지만, 익숙해질수록 강력한 도구라는 느낌.# 3주차를 마치며3주차는 한마디로*“CSS는 꾸미는 게 아니라 설계하는 언어”라는 걸 체감한 주차였다.박스 모델로 구조를 이해하고배경으로 분위기를 만들고미디어 쿼리로 화면에 반응하게 만들고Flexbox로 배치를 정리하는 흐름이제야 “웹 페이지를 만든다”는 감각이 조금씩 잡히기 시작했다.

웹 퍼블리싱HTMLCSSjavascript웹표준스터디DOIT

하늘소녀

Do it! HTML + CSS 웹 표준의 정석 - 겨울 방학 맞이 기초 언어 스터디(2)

#지난주에 이어서...1주차에서 HTML 기본 구조를 훑어봤다면,2주차는 ‘이제 진짜 웹페이지처럼 보이게 만드는 단계’였다.이번 주차에서는 입력 요소(Form) 와 CSS 스타일링의 핵심 개념들을 집중적으로 다뤘다.# 입력 양식 작성하기 (Form)웹에서 빠질 수 없는 게 바로 입력 폼이다.회원가입, 로그인, 검색창… 전부 여기서 시작하니까!<form> 태그의 역할과 기본 구조 이해<input> 태그의 다양한 타입들 (text, password, checkbox, radio 등)placeholder, value, name 같은 입력 요소 속성들여러 입력 태그를 함께 사용하는 방법*단순히 “입력창을 만든다”에서 끝나는 게 아니라브라우저가 데이터를 어떻게 인식하는지까지 같이 보게 돼서 꽤 중요했다.# CSS 기초 다지기이번 주차의 핵심은 단연 CSS.* CSS 기본 개념CSS를 왜 쓰는지HTML과 CSS의 역할 분리스타일 적용 우선순위 개념특히 같은 요소에 스타일을 여러 번 줬을 때 어떤 게 적용되는지직접 실습으로 보니까 이해가 훨씬 빨랐다.# CSS 속성으로 다양한 스타일 적용하기색상, 글자 크기, 배경…이제야 “웹페이지 꾸미기”가 시작된 느낌!color, background, font-sizergba 색상으로 투명도 조절배경 이미지 적용 & 고정 배경* 단순한 글자 하나도CSS 하나 바꾸면 분위기가 완전 달라지는 게 재밌었다.# text-shadow로 텍스트 효과 주기이번 주차에서 제일 재미있었던 파트.text-shadow 기본 문법그림자 위치, 흐림 정도, 색상 조합여러 스타일을 적용한 텍스트 실습텍스트 하나에 그림자만 줘도확실히 기본이랑은 느낌이 다르다!# 2주차를 마치며입력 폼은 웹의 기본 인터페이스CSS는 단순 꾸미기가 아니라 구조적인 규칙우선순위 개념은 앞으로 계속 중요하게 쓰일 것 같음 아직은 단순한 예제들이지만,이제 “보이는 웹페이지”를 만들기 시작했다는 느낌이 들어서확실히 1주차보다 재미있었다. 

웹 퍼블리싱HTMLCSSjavascript웹표준스터디DOIT

[프로젝트 공유] 프레임워크에 덜 의존적인 UI 컴포넌트를 만들어봤습니다

안녕하세요.프론트엔드 개발을 하면서 React, Vue 등 여러 프레임워크를 오가다 보니항상 비슷한 고민을 하게 되었습니다.Select, Toast 같은 기본 UI 컴포넌트는프레임워크가 바뀔 때마다 다시 구현해야 할까?UI 동작과 UX는 거의 같은데,프레임워크에 묶여 있다는 이유로매번 새로 만드는 구조가 과연 효율적인지 의문이 들었습니다.그래서 개인 프로젝트로프레임워크에 덜 의존적인 UI 컴포넌트를 Web Components 기반으로 만들어보았습니다.🔧 어떤 것을 만들어봤나요?크게 두 가지 컴포넌트입니다.1⃣ Select 컴포넌트Web Component 기반 (의존성 없음)대용량 데이터 처리를 위한 가상 스크롤한글 초성 / 일본어 / 중국어 검색 지원키보드 접근성 및 스크린 리더 대응CSS Variables 기반 스타일 커스터마이징React, Vue 등에서 사용할 수 있도록 래퍼 제공2⃣ Toast 알림 컴포넌트프레임워크에 종속되지 않는 Toast UI여러 위치와 애니메이션 지원중복 메시지 자동 그룹핑SSR 환경 고려접근성(ARIA) 기본 지원🤔 Web Components를 선택한 이유Web Components를 선택한 이유는 단순합니다.브라우저 표준 기술이라 장기 유지에 유리특정 프레임워크 라이프사이클에 묶이지 않음여러 프로젝트에서 재사용 가능UI 프리미티브(Select, Toast 등)에 적합하다고 판단물론 프레임워크 전용 컴포넌트만큼의 DX는 아닐 수 있지만,장기적인 관점에서는 충분히 의미 있는 시도라고 생각했습니다.💬 커뮤니티 분들께 여쭤보고 싶습니다실무에서 Web Components를 사용해보신 경험이 있으신가요?프레임워크 변경 가능성이 있는 프로젝트에서UI 컴포넌트를 어떻게 관리하고 계신지 궁금합니다.이런 접근 방식이 현실적인 선택일지 의견을 듣고 싶습니다.아직은 실험적인 프로젝트이고,피드백을 받아가며 개선해보려는 단계입니다.편하게 의견 주시면 감사하겠습니다.🔗 참고 링크Select 컴포넌트: https://www.npmjs.com/package/seo-selectToast 컴포넌트: https://www.npmjs.com/package/seo-toast

프론트엔드javascripttypescriptreactvuewebcomponentnpmselecttoast

fetchModule을 만들어 보았다

const fetchModule = { async get(url) { const response = await fetch(url) .catch(error => { alert('관리자에게 문의주세요') }) if (!response.ok){ alert(await response.text()) return } return await response.json() }, async getAndParam(url, request) { const queryParam = this.query(request); const response = await fetch(url + '?' + queryParam) .catch(error => { alert('관리자에게 문의주세요') }) if (!response.ok){ alert(await response.text()) return } return await response.json() }, async post(url, request) { const response = await fetch(url, { method: "POST", headers: { 'Content-Type': 'application/json', 'X-CSRF-TOKEN': document.querySelector('input[name="_csrf"]').value }, body: JSON.stringify(request) }).catch(error => { alert('고객센터에 문의해주세요.') }) if (!response.ok){ alert(await response.text()) return } return await response.json() }, async put(url, request) { const response = await fetch(url, { method: "PUT", headers: { 'Content-Type': 'application/json', 'X-CSRF-TOKEN': document.querySelector('input[name="_csrf"]').value }, body: JSON.stringify(request) }).catch(error => { alert('고객센터에 문의해주세요.') }) if (!response.ok){ alert(await response.text()) return } return await response.json() }, async delete(url, request) { const response = await fetch(url, { method: "DELETE", headers: { 'Content-Type': 'application/json', 'X-CSRF-TOKEN': document.querySelector('input[name="_csrf"]').value }, body: JSON.stringify(request) }).catch(error => { alert('고객센터에 문의해주세요.') }) if (!response.ok){ alert(await response.text()) return } return await response.json() }, query(params) { return Object.keys(params) .map(k => encodeURIComponent(k) + '=' + encodeURIComponent(params[k])) .join('&'); } }매번 해더값이나 method 값 넣어주기 귀찮아서 만들어 봤다 ㅎㅎ 팀원들이 잘 사용해주면 기분이 좋을것 같당

javascript

채널톡 아이콘