TypeScript의 해당 클래스에서만 정적 메서드에 액세스할 수 있도록 하는 방법은 무엇입니까?

6604 단어 typescript
Originally posted here!

해당 클래스에서만 정적 메서드에 액세스할 수 있도록 하려면 TypeScript에서 정적 메서드 앞에 private 키워드를 사용하여 정적 메서드를 전용 정적 메서드로 만들어야 합니다.

TL;DR




// a simple class
class Person {
  name: string;
  age: number;

  // a private static method
  private static sayHi() {
    console.log("Hi, Person!");
  }

  constructor(name: string, age: number) {
    this.name = name;
    this.age = age;
  }
}

// the `sayHi` static method
// cannot be accessed from outside the class
Person.sayHi(); // This is not allowed now ❌


예를 들어, 2개의 필드, 생성자 및 다음과 같은 정적 메서드가 있는 Person라는 클래스가 있다고 가정해 보겠습니다.

// a simple class
class Person {
  name: string;
  age: number;

  // static method
  static sayHi() {
    console.log("Hi, Person!");
  }

  constructor(name: string, age: number) {
    this.name = name;
    this.age = age;
  }
}

// the `sayHi` static method
// can be accessed from outside the class
Person.sayHi(); // This is allowed now


현재 위의 클래스에서 sayHi 정적 메서드는 public이며 클래스 외부에서 액세스할 수 있습니다.
Person 클래스 내에서만 액세스할 수 있도록 하려면 다음과 같이 정적 메서드 앞에 private 키워드를 추가해야 합니다.

// a simple class
class Person {
  name: string;
  age: number;

  // a private static method
  private static sayHi() {
    console.log("Hi, Person!");
  }

  constructor(name: string, age: number) {
    this.name = name;
    this.age = age;
  }
}

// the `sayHi` static method
// cannot be accessed from outside the class
Person.sayHi(); // This is not allowed now ❌


위의 코드에서 알 수 있듯이 클래스 외부에서 private static method라는 sayHi에 액세스하려고 하면 TypeScript 컴파일러가 Property 'sayHi' is private and only accessible within class 'Person'.라는 오류를 표시합니다. 이는 우리가 원하는 것입니다.

TypeScript에서만 해당 클래스 및 하위 클래스 내에서 정적 메서드에 액세스할 수 있도록 성공적으로 만들었습니다. 예이 🥳!

codesandbox에 있는 위의 코드를 참조하십시오.

그게 다야 😃!

이 정보가 유용하다고 생각되면 자유롭게 공유하세요 😃.

좋은 웹페이지 즐겨찾기