programing

스크립트 클래스의 메서드에서 "함수가 아닙니다" 오류가 발생했습니다.

bestprogram 2023. 10. 19. 22:40

스크립트 클래스의 메서드에서 "함수가 아닙니다" 오류가 발생했습니다.

저는 Angular2 웹 어플리케이션 작업을 하고 있습니다.타이프스크립트로 간단한 클래스를 만들었습니다.

export class User {
    firstName: string;
    lastName: string;

    nominative() : string {
        return this.lastName + " " + this.firstName;
    }
}

내가 부를때nominative활자로User다음 오류가 발생합니다.Error in :0:0 caused by: user.nominative is not a function.

내 기능을 호출합니다.AppComponent클래스:

export class AppComponent implements OnInit {
    name: string = "";

    ngOnInit() : void {
        let user = JSON.parse(sessionStorage.getItem("User")) as User;
        if (user) {
            this.name = user.nominative();
        }
    }
}

이미 람다 표현식을 다음과 같이 사용하려고 했습니다.

nominative = () : string => { ... }

하지만 아무것도 바뀌지 않습니다.문제는 이 수업에만 있는데, 제가 뭘 잘못하고 있는 걸까요?

as User값이 유형이라고 가정해도 안전하다는 것만 컴파일러에게 알려줍니다.User, 그러나 런타임에 영향을 미치지 않으며 JSON으로 메소드가 전달되지 않기 때문에 메소드가 없습니다.

당신은 필요할 것입니다.

let user = new User(JSON.parse(sessionStorage.getItem("User")));

실제를 보다User사례.JSON의 값을 다음과 같은 필드에 할당하는 생성자를 만들어야 합니다.

class User {
  ...
  constructor(json:any) {
    this.firstName = json.firstName;
    this.lastName = json.lastName;
  }

이 비디오는 그것을 꽤 잘 설명해 줍니다.클래스를 호출하기 전에 클래스의 메서드가 존재하는지 확인해야 합니다.프로그램 전체에 메소드가 포함된 수업 사례가 있는데도 왜 한 페이지에서 이런 일이 발생했는지 아직 정확히 모르겠지만 효과가 있었습니다.https://www.youtube.com/watch?v=SdAt1qbWB-o/

if(this.searchResult.clearResults){
      this.searchResult.clearResults()
}

언급URL : https://stackoverflow.com/questions/42899570/method-in-typescript-class-give-error-is-not-a-function