강의

멘토링

로드맵

Inflearn brand logo image

인프런 커뮤니티 질문&답변

two678님의 프로필 이미지
two678

작성한 질문수

한 입 크기로 잘라먹는 타입스크립트(TypeScript)

자바스크립트의 클래스 소개

클래스 관련 질문 드립니다

해결된 질문

작성

·

25

·

수정됨

0

한입 크기로 잘라먹는 타입스크립트 강의에서 Section 7의 36번 강의에서 이 아래의 코드가 나오는데 Student 클래스의 생성자 부분에서 'name' 매개변수에는 암식적으로 'any' 형식이 포함됩니다.라고 에러가 뜨고 name 뿐만아니라 grade, age 도 똑같은 에러가 뜨는데 혹시 원인이 뭔지 알 수 있을까요? 강사님과 똑같은 코드를 쳤는데 오류가 나와서 어디가 문제인지 모르겠습니다...

class Student {
  // 필드
  name;
  grade;
  age;

  // 생성자
  constructor(name, grade, age) {
    this.name = name;
    this.grade = grade;
    this.age = age;
  }

  // 메서드
  study() {
    console.log("열심히 공부 함");
  }

  introduce() {
    console.log(`안녕하세요!`);
  }
}
image.png

 

답변 2

1

이정환 Winterlood님의 프로필 이미지
이정환 Winterlood
지식공유자

안녕하세요 이정환입니다.

이 문제는 질문자님께서 실습 파일을 현재 "TS" 파일로 만드셔서 그렇습니다. 해당 챕터에서는 자바스크립트의 클래스를 소개하기 위해 "JS" 파일을 만들어 실습하고 있으니 파일의 확장명을 TS -> JS로 바꿔 타입 검사가 이루어지지 않도록 하시면 문제가 해결됩니다.

two678님의 프로필 이미지
two678
질문자

아하 그래서 오류가 났던 거군요 감사합니다!

1

안녕하세요, 인프런 AI 인턴입니다. 이지현님.

타입스크립트에서 매개변수의 any 타입은 일반적으로 strict 모드 또는 noImplicitAny 옵션이 활성화되어 있을 때 발생하는 문제입니다. 이 옵션들이 활성화되면, 타입스크립트는 타입 추론이 불가능한 경우 경고를 표시하며 any로 추론하게 됩니다.

지금의 오류는 매개변수 name, grade, age에 명시적으로 타입을 지정하지 않아 발생한 것입니다. 이러한 문제를 해결하기 위해서는 각 매개변수에 타입을 명시해주면 됩니다. 예를 들어, string 타입처럼 우선적인 타입을 지정해주시면 에러가 사라질 것입니다.

class Student {
  // 필드
  name: string;
  grade: string; // 또는 number, 타입에 맞게 변경하세요.
  age: number;

  // 생성자
  constructor(name: string, grade: string, age: number) { // 여기에 타입을 명시합니다.
    this.name = name;
    this.grade = grade;
    this.age = age;
  }

  // 메서드
  study() {
    console.log("열심히 공부 함");
  }

  introduce() {
    console.log(`안녕하세요!`);
  }
}

이 수정된 코드에서는 namegradestring, agenumber로 명시되어 각 필드와 매개변수가 구체적임을 명시하므로 타입스크립트 컴파일러가 더 정확히 타입을 추론할 수 있게 됩니다.

관련 자료를 더 보고 싶으시다면 이곳을 참고하시면 기본 타입 정의에 대해 더 깊이 이해하실 수 있습니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

two678님의 프로필 이미지
two678

작성한 질문수

질문하기