inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

애프터캠프님의 게시글

애프터캠프 애프터캠프

@aftercamp

수강생
1,896
수강평
104
강의 평점
4.9

게시글 84

질문&답변

강의 마지막이 잘려있는것 같습니다

안녕하세요. 강의가 잘린 상태로 업로드가 돼서 죄송합니다. 제가 이전에 편집 전 영상이 컴퓨터에 남아있지 않아서 새로운 영상으로 올리는데 어려움이 있습니다. 아마 영상 마지막에 "RecyclerView에다가 데이터를 공급해줘야 하는데" 로 끝났는데 흐름상 데이터를 공급해서 렌더링한다고만 정리해주셔도 될 것 같습니다. 결국 이 강의에서 전달하고 싶었던 건 "이미 렌더링 된 것이 잠깐 화면에 안 보였다가 보이면 다시 렌더링하는 게 아니라 이전 렌더링하기 위해 캐시에 저장했다가 렌더링한다" 입니다.

좋아요수
0
댓글수
2
조회수
73

질문&답변

이게 된다는걸 어떻게 판단할 수 있나요?

안녕하세요 답변이 늦었습니다. 제가 질문 의도를 이해를 못했는데 그냥 질문 그대로 답변을 드리자면 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
조회수
86

질문&답변

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
조회수
93

질문&답변

행운 닉네임 등록부탁드립니다!

안녕하세요 추가했습니다. 연휴간 추가했어야 하는데 늦어서 죄송합니다.

좋아요수
0
댓글수
2
조회수
154

질문&답변

각 강의에 대한 설명 링크 404에러

안녕하세요 불편을 드려서 죄송합니다. 복구했으니 지금은 잘 보일 겁니다.

좋아요수
0
댓글수
2
조회수
88

질문&답변

블로그 링크 문제

복구했습니다!

좋아요수
1
댓글수
1
조회수
138

질문&답변

제네릭과 사용자 정의 타입 가드에 관한 질문

안녕하세요. 우선 제가 생각한 답안을 보여드리면 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
조회수
178