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

6714 단어 typescript
Originally posted here!

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

TL;DR




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

  // a protected static method
  protected 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 클래스 및 Person 클래스(하위 클래스)를 확장하는 다른 클래스 내에서만 액세스할 수 있도록 하려면 다음과 같이 정적 메서드 앞에 protected 키워드를 추가해야 합니다.

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

  // a protected static method
  protected 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 ❌


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

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

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

그게 다야 😃!

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

좋은 웹페이지 즐겨찾기