묻고 답해요
141만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
해결됨Next + React Query로 SNS 서비스 만들기
props 객체의 타입지정은 interface로 안하시는 이유가 궁금합니다
객체의 타입을 주로 interface로 사용한다고 하셨는데props 객체의 타입은 type으로 지정해주시는 이유가 있을까요? 없으시다면 프로젝트에서 interface나 type중에하나만 사용해도 될까요?
-
해결됨[리뉴얼] 타입스크립트 올인원 : Part1. 기본 문법편
interface를 사용할 때 private 사용방법은?
impolements러 interface를 받아 class를 만들때 private이 안되는 오류를 보여주셨는데요interface를 사용하지 않고 그냥 class안에서 type을 지정하는 방법, abstract class를 이용하는 방법 모두 이해됬습니다. 하지만 interface를 사용하면 private, protected 사용이 불가한 것인지 잘 모르겠어서 질문을 올립니다. 구글링해본결과 class내에 속성으로 만들고 getter, setter를 이용하는 것으로 우회하는 방법을 사용하더라구요.(https://stackoverflow.com/questions/37791947/how-to-define-a-private-property-when-implementing-an-interface-in-typescript) 이렇게 했을 때 private의 기능인 class 밖에서는 호출 할 수 없다고 위반되는 결과가 나옵니다. 어떤식으로 해결 해야 할까요? interface Interface { readonly a: string; b: number; } class TSClass implements Interface { private readonly _a: string = "init"; get a() { return this._a; } protected _b: number = 1; get b() { return this._b; } set b(v: number) { this._b = v; } c: string = "기본값이 public"; method() { console.log(this._a); console.log(this._b); console.log(this.c); } } class inheritClass extends TSClass { method() { console.log(this._a); // error console.log(this.a); // 가능.. console.log(this._b); console.log(this.b); console.log(this.c); } } new inheritClass()._a; // error new inheritClass().a; // 가능... new inheritClass()._b; // error new inheritClass().b; // 가능.. new inheritClass().c;
-
해결됨나도코딩의 자바 기본편 - 풀코스 (20시간)
추상클래스 (abstract class)와 인터페이스(interface)의 최적의 쓰임?
안녕하세요 나도코딩 선생님...ㅎ몇 주전에 나도코딩 자바편 강의를 완강하고 다시 2회차로 강의를 듣는 중입니다...ㅎ추상 클래스 (abstract class)와 인터페이스(interface) 관련 강의를 들으면서 각각의 특징들 및 차이점들에 대해서 다시 조금씩 알아가고 있는데... (예를 들면, 추상클래스는 abstract 키워드를 가지고, abstract메소드를 가지고 있어서 객체를 생성할 수 없는 반면, 인터페이스(interface)는 보통 -able 키워드, 변수 X, 생성자 X, 오로지 메소드만 있다 등)이 둘, 그러니까 추상 클래스 (abstract class)와 인터페이스(interface)는 '어느 때 (또는 어느 시점)'에 활용하는게 가장 적절한지 디테일하게 알 수 없을까요?항상 좋은 강의와 답변 감사합니다...ㅎ
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
인터페이스 사용 이유
[질문 내용]여기에 질문 내용을 남겨주세요."아직 데이터 저장소가 선정되지 않아서, 우선 인터페이스로 구현 클래스를 변경할 수 있도록 설계"한다고 설명해주셨는데,save findById findByName findAll이 메서드들에 대한 실제 구현 코드를 DB가 변경되면 새로 작성하면서 service단에서는 수정할 필요 없도록 인터페이스를 사용해야한다는 뜻인가요?인터페이스 없이 아래처럼 MemoryMemberRepository2를 새로 작성하고,public class MemoryMemberRepository { save( ... ){ ... } findById( ... ){ ... } findByName( ... ){ ... } findAll( ... ){ ... } } // DB가 변경되어 새로 작성한 클래스 public class MemoryMemberRepository2 { save( ... ){ ... } findById( ... ){ ... } findByName( ... ){ ... } findAll( ... ){ ... } }타입만 MemoryMemberRepository2로 바꿔주면똑같이 service단에서 별도의 수정 없이 처리할 수 있지 않나요?public class MemberService { private final MemoryMemberRepository2 memberRepository = new MemoryMemberRepository2(); memberRepository.save(...); memberRepository.findById(...); ... } 다른 질문에 답변으로 써주신 내용(느슨한 결합 등) 읽어보긴 했는데, 인터페이스의 필요성을 완전히 이해하지 못해서 질문 남깁니다!
-
미해결타입스크립트 입문 - 기초부터 실전까지
interface관련 재 질문
여기서 함수 getUser의 타입을 User로 정해줬는데mike를 매개변수로 입력하면 에러가 나는 이유는 이해했습니다. 근데 june은 왜 에러가 나지 않나요? User에 입력한 타입에서 skill이 하나 더 있는데도 말이죠.
-
미해결[리뉴얼] 타입스크립트 올인원 : Part1. 기본 문법편
interface에 readonly 속성이 있을 때
interface A { readonly a: string; b: string; } class B implements A { a: string = '123'; // OK b: string = 'world'; } const b: B = new B(); b.a = '456'; // OK console.log(b); // { a: '456', b: 'world' } 인터페이스 A에서 변수 a는 readonly 키워드가 붙어있는데 이를 구현한 클래스 B에서 readonly 키워드를 붙여주지 않아도 에러가 발생하지 않는 이유가 궁금합니다.
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
MemberRepository repository = new MemoryMemberRepository(); 질문
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용] MemoryMemberRepositoryTest 클래스에서 MemberRepository repository = new MemoryMemberRepository(); 해당 부분에 질문이 있습니다. 해당 인스턴스 자료형을 MemberRepository 라는 인터페이스로 한 이유가 있는지 궁금합니다. 마지막에 afterEach() 작성할 때 MemoryMemberRepository 로 자료형을 바꾸던데 처음부터 이렇게 썼으면 됐지 않나요?