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

6437 단어 typescript
Originally posted here!

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

TL; DR




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

  // a private static field
  private static className = "Person";

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

// the `className` static field
// cannot be accessed from outside the class
console.log(Person.className); // This is not allowed now ❌


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

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

  // static field
  static className = "Person";

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

// the `className` static field
// can be accessed from outside the class
console.log(Person.className); // This is allowed now


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

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

  // a private static field
  private static className = "Person";

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

// the `className` static field
// cannot be accessed from outside the class
console.log(Person.className); // This is not allowed now ❌


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

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

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

그게 다야 😃!

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

좋은 웹페이지 즐겨찾기