inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

묻고 답해요

173만명의 커뮤니티!! 함께 토론해봐요.

forEach 제네릭 관련 문의

미해결

[리뉴얼] 타입스크립트 올인원 : Part1. 기본 문법편

문의1) interface Array<T> { forEach(callbackfn: (value: T, index: number, array: T[]) => void, thisArg?: any): void; } 위 인터페이스를 보고 호출값을 객체값 또는 문자형이 아닌 배열형 [ 1, 2, 3 ] 으로 호출을 하고 있는데요. 어디에서 힌트를 얻어 배열형으로 호출을 하신건지 궁금합니다. 문의2) 만약 아래와 같이 되어 있어도 배열형으로 호출을 해도 되는지 궁금합니다. interface Test<T> { aa(callbackfn: (value: T, index: number ) => void ): void; } 문의3) 만약 바로 위 Test 인터페이스에 대해 배열로만 제한을 하고 T 타입에 대해 호출하는 순간의 타입으로 제한하고자 한다면 어떻게 정의를 해줘야 할까요?

  • typescript
  • 제네릭
최병국 댓글 1 좋아요 0 조회수 82

제네릭 코드에서 new 키워드를 사용할 수 없다면 불변 객체를 어떻게 활용할 수 있나요?

미해결

김영한의 실전 자바 - 중급 2편

불변 객체는 내부 필드에 변경이 생길 경우 새로운 객체를 반환해줘야 한다고 배웠습니다. 제네릭 타입은 타입 소거 문제 때문에 new 키워드를 사용할 수 없는데... 이 경우 제네릭과 불변 객체는 공존할 수 없는 건가요? 아래 코드와 같이 실습을 해봤는데 주석 처리한 부분을 어떻게 해결해야 할지 잘 모르겠습니다 ㅠㅠ public class Box<T extends Animal> { private final T value; public Box(T value) { this.value = value; } public T get() { return value; } public Box<T> withName(String name) { //이 부분을 어떻게 처리해야할까요..? } } public class Animal { private final String name; private final int size; public Animal(String name, int size) { this.name = name; this.size = size; } public Animal withName(String name) { return new Animal(name, size); } public class Dog extends Animal { public Dog(String name, int size) { super(name, size); } @Override public Dog withName(String name) { return new Dog(name, getSize()); } }

  • java
  • 객체지향
  • 제네릭
  • 불변
싱숭생숭 댓글 1 좋아요 0 조회수 208

타입 이레이저 동작방식 질문입니다!

미해결

김영한의 실전 자바 - 중급 2편

안녕하세요! 이번에 정처기 문제에서 타입 이레이저 관련 문제가 나왔는데, 궁금한 점이 생겨서 질문 올려봅니다. class Printer { void print(Integer a) { System.out.print("A" + a); } void print(Object a) { System.out.print("B" + a); } void print(Number a) { System.out.print("C" + a); } } public class Gisafirst { public static void main(String[] args) { new Container<>(0).print(); } public static class Container<T> { T value; public Container(T t) { value = t; } public void print() { new Printer().print(value); } } } 제가 이해한 바로는, 강의에서 설명해주신대로 new Container<>(0) 에서 public static class Container<Integer> { Integer value; public Container(Integer t) { value = t; } public void print() { new Printer().print(value); } } 컴파일러가 컴파일 시점에 이렇게 이해하고 나서 컴파일 종료 후, 타입 소거가 일어나서, Object로 변환한다고 이해했습니다. 그래서 print 메서드를 호출할 때 value는 Object 타입이므로 B0가 출력되는 것이죠. 여기서 궁금한 점은 바로 print의 오버로딩 메서드 선택 시점입니다. 제가 찾아본 바로는 오버로딩 메서드 선택시점은 컴파일 단계에서 이루어진다로 알고있습니다. 그렇다면 동작방식이 컴파일 종료 후 타입 소거가 일어나는게 아니라, 정확히는 "컴파일 시작 - 타입 소거 - 오버로딩 메서드 선택 - 컴파일 종료 - 런타임" 이런식으로 일어나는건가용? 아니면 어디서 오해하고 있는지 궁금합니다!

  • java
  • 객체지향
  • 코딩-테스트
  • 알고리즘
  • 타입이레이저
  • 제네릭
댓글 1 좋아요 0 조회수 195

제네릭에서 질문입니다.

미해결

[리뉴얼] 타입스크립트 올인원 : Part1. 기본 문법편

function add<T extends (a: string) => number>(x: T): T { return x }; add((a)=>+a) 위 코드 add((a)=>+a) 에서 인자 a가 왜 string으로 인식되는지 , +a가 왜 숫자로 인식되는지 이해가 가지 않습니다.

  • 제네릭
  • typescript
댓글 2 좋아요 0 조회수 383

part1 람다식 강의에서 제네릭

해결됨

[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part1: C# 기초 프로그래밍 입문

안녕하세요. part1 람다식 강의 16:18 에서 50번째 줄 에 있는 new Myfunc<Item, bool> 을 지우셨는데 궁금증이 생겨 질문드립니다. 14:40 에서 50번째 줄 에 있는 것처럼 제네릭이 없는 델리게이트를 사용할 때는 ItemSelector selector = new ItemSelector ((Item Item) => { return item.ItemType == ItemType.Weapon}); new키워드를 쓰셨는데 16:18 에서 제네릭을 사용하시고부터는 없어도 똑같이 동작한다고 말씀하셨습니다. 즉 코드상으로 MyFunc<Item, bool> selector = new MyFunc<Item, bool> ((Item Item) => { return item.ItemType == ItemType.Weapon}); 에서 MyFunc<Item, bool> selector = (Item Item) => { return item.ItemType == ItemType.Weapon}; 로 고치셨습니다. new Myfunc<Item, bool> 를 지우셨는데 제네릭을 사용할 때는 new 를 써도 되고 안써도 되고라고 이해해도 될까요?

  • 제네릭
  • new
  • C#
레슬매니아 댓글 1 좋아요 0 조회수 275

Map의 제네릭에 일반 인터페이스를 할당할 수 있나요?

미해결

타입스크립트 입문 - 기초부터 실전까지

interface ITest { id: number; name: string; isRole: boolean; } const userMap = new Map<ITest>(); 선생님 안녕하세요! 타입스크립트 공부중에 데이터자료형에도 사용해보고싶은데 위처럼 interface로 선언한것을 Map에 할당하고싶으면 어떻게 하면 좋을까요..?

  • 타입스크립트
  • map
  • es6
  • javascript
  • typescript
  • 제네릭
  • 인터페이스
ChipmunkDev 댓글 1 좋아요 1 조회수 375

제네릭 타입 제한 강의에서 질문드립니다.

미해결

타입스크립트 입문 - 기초부터 실전까지

안녕하세요, 제네릭 강의 부분에 '정의된 타입으로 타입을 제한하기' 강의에서 여쭤보고 싶은게 생겨 질문 드립니다. logTextLength(10); 에서 에러가 출력되는 이유가 궁금합니다. 수업과 핸드북 내용(https://joshua1988.github.io/ts/guide/generics.html#%EC%A0%9C%EB%84%A4%EB%A6%AD-%EC%A0%9C%EC%95%BD-%EC%A1%B0%EA%B1%B4)을 참조했을 때, 에러가 발생하는 이유는 logTextLength함수의 전달인자인 10인 숫자 타입에는 length 속성이 없기 때문이라고 하셨는데요, 그런데 수업 중 'T extends LengthType'으로 T 타입은 LengthType 내에 있는 모든 속성들을 갖고 있게 된다고 하셔서, logTextLength(10) 의 10이라는 숫자 타입에도 LengthType의 속성인 length를 갖게 된다고 생각했었습니다. 그런데 logTextLength(10) 이 에러를 출력하는 이유로, 10에 length 속성이 없기 때문이라고 하신 부분이 이해가 잘 안가 문의드립니다.

  • 타입스크립트
  • es6
  • 제네릭
  • 제네릭타입제한
  • javascript
  • typescript
rmdk6qjs 댓글 1 좋아요 3 조회수 410

인기 태그

인프런 TOP Writers

주간 인기글