애프터캠프
@aftercamp
수강생
1,876
수강평
102
강의 평점
4.9
## 이력서, 포폴 첨삭 등 강의 외 문의사항이 있으시면 이곳으로 문의 주세요
강사 깃헙: https://github.com/morishjs
지식저장소: https://wiki.after-camp.com/Home
🎨 포트폴리오: https://morish.dev
📜 이력: https://shorturl.at/gKU68
부트캠프 수료했는데 앞으로 뭘 공부해야 할지 막막하시죠?
👊 부트캠프에서는 취업률 90%라고 하는데... 전 취업이 잘 안돼요! 😢
👊 취업은 했는데 사수가 없어서 너무 불안해요! 🤑
👊 작성한 코드가 동작은 하는데 이렇게 작성하는지 모르겠어요! 🤯
애프터캠프에서는 다음이 가능합니다!
👌 CTO 2번 경험, 다수의 프로젝트를 경험한 풀스택 개발자가 직접 코칭합니다.
👌 코드 리뷰, 커리어 방향성 고민을 같이 해드립니다.
👌 애프터캠프에는 한국, 미국 실리콘밸리 예비 개발자, 현직자가 모인 곳입니다.
강의
수강평
- 부트캠프에서 알려주지 않는 것들 (리액트) 1편
- 실전 연습으로 익히는 고급 타입스크립트 기술
- 실전 연습으로 익히는 고급 타입스크립트 기술
게시글
질문&답변
강의 마지막이 잘려있는것 같습니다
안녕하세요. 강의가 잘린 상태로 업로드가 돼서 죄송합니다. 제가 이전에 편집 전 영상이 컴퓨터에 남아있지 않아서 새로운 영상으로 올리는데 어려움이 있습니다. 아마 영상 마지막에 "RecyclerView에다가 데이터를 공급해줘야 하는데" 로 끝났는데 흐름상 데이터를 공급해서 렌더링한다고만 정리해주셔도 될 것 같습니다. 결국 이 강의에서 전달하고 싶었던 건 "이미 렌더링 된 것이 잠깐 화면에 안 보였다가 보이면 다시 렌더링하는 게 아니라 이전 렌더링하기 위해 캐시에 저장했다가 렌더링한다" 입니다.
- 0
- 2
- 27
질문&답변
이게 된다는걸 어떻게 판단할 수 있나요?
안녕하세요 답변이 늦었습니다. 제가 질문 의도를 이해를 못했는데 그냥 질문 그대로 답변을 드리자면 https://www.typescriptlang.org/play/?#code/MYewdgzgLgBAJgIwFwwN4wNoAcTQJJwoAKuUBAusaQNyYCuEApgE4EoCqTrclMnLtAL4wAvGkHUgA이런 타입스크립트 플레이그라운드에서 타입이 맞냐 아니냐를 확인가능합니다. 그리고 굳이 타입에러를 없애겠다고 하면type PostId = `post_${string}`; type UserId = `user_${string}`; type Post = { title: string; content: string; }; type User = { name: string; email: string; }; const db: { [postId: PostId]: Post; [userId: UserId]: User } = {}; // 사용 예시 db["post_1"] = { title: "Hello", content: "World" }; db["user_1"] = { name: "Kim", email: "kim@example.com" };이렇게 하면 되지 않을까 싶습니다.
- 0
- 2
- 34
질문&답변
연습문제 강의 확인 부탁드립니다.
안녕하세요. 추가했습니다.
- 0
- 2
- 50
질문&답변
object key 질문드립니다.
안녕하세요. 제가 질문을 제대로 이해했는지 모르겠는데 이해한대로 답변을 드리자면,(사진)강의에선 obj의 key들은 모두 string입니다. 코드를 어떻게 작성하셔서 string | number로 추론되었는지 이해가 조금 안되는데 알려주시면 감사하겠습니다.const obj = { a: 1, 1: "1", } const a = obj[1]obj['a'] => 1 => number로 추론obj[1] => "1" => string로 추론됩니다. 혹시 답변이 불명확하면 답변 달아주시면 답변드리겠습니다.
- 0
- 1
- 36
질문&답변
행운 닉네임 등록부탁드립니다!
안녕하세요추가했습니다. 연휴간 추가했어야 하는데 늦어서 죄송합니다.
- 0
- 2
- 61
질문&답변
각 강의에 대한 설명 링크 404에러
안녕하세요 불편을 드려서 죄송합니다. 복구했으니 지금은 잘 보일 겁니다.
- 0
- 2
- 49
질문&답변
행운문제 닉네임 등록 요청드립니다
안녕하세요 등록 완료했습니다.
- 0
- 2
- 43
질문&답변
Automatic batching에 관해 궁금한 점이 있습니다.
네 맞습니다. 개발자가 따로 신경쓰지 않아도 리액트 내부적으로 최적화가 되어있습니다.
- 0
- 1
- 87
질문&답변
블로그 링크 문제
복구했습니다!
- 1
- 1
- 103
질문&답변
제네릭과 사용자 정의 타입 가드에 관한 질문
안녕하세요.우선 제가 생각한 답안을 보여드리면type SingleValue = Date | null type RangeValue = [SingleValue, SingleValue] type DatePicker = | { type: 'single'; value: SingleValue } | { type: 'range'; value: RangeValue }; class DatePickerKlass { picker: DatePicker; constructor(picker: DatePicker) { this.picker = picker; } updateValue(date: Date) { if (this.picker.type === 'single') { this.picker.value = date; } else if (this.picker.type === 'range') { this.picker.value = [date, null]; } } }작성해주신 답안 보다 좀 더 간단하게 만들 수 있지 않을까 해서 저 같은 경우엔 discriminated union 으로 문제 풀어봤습니다. updateValue(date:Date) { const isSingle = ():this is DatePicker => this.type === 'single' if(isSingle()) { this.value = date return; } }여기서 타입이 좁혀지지 않는 이유는 타입스크립트의 특성인데요. T에 타입을 제한해도 결국 T는 'placeholder'이기 때문에 특정 타입으로 좁혀지지 않습니다. 저도 실무에서 사용하다보면, 생각대로 안되는 게 참 많은데 이럴 땐 "아! 이건 아직 타입스크립트 개발하시는 분이 구현을 안해놨구나..." 라고 생각합니다. 버전이 높아지면 이런 문제도 해결되는 경우가 있거든요.타입스크립트가 다른 statically-typed 언어에 비해 굉장히 자유도가 높은데, 그만큼 아직 구현이 안된 것이 종종 있습니다.
- 1
- 1
- 141







