Programing

왜 밑줄이 각4의 활자 클래스의 필드에 추가되는가?

c10106 2022. 4. 9. 09:36
반응형

왜 밑줄이 각4의 활자 클래스의 필드에 추가되는가?

나는 Angul4 프로젝트를 만들고 IntelliJ를 사용하고 있다.새 클래스를 만든 다음 gettersetter를 추가할 때마다.IDE는 필드에 밑줄을 추가한다.

그 형식 구문은 IDE에 의해 자동적으로 인식되는 것처럼 보이지만, 그럼에도 불구하고 이런 방식으로 필드를 만들어 낸다는 점에서, 나는 이것이 최선의 관행이라고 생각하도록 내버려두지만, 나는 또한 이렇게 해서는 안 된다는 것을 읽었었다.

IDE는 왜 이렇게 하는가?그리고 각진 프로젝트를 위해 이것을 허용해야 할까?도와줘서 고마워!

게터 및 세터를 작성하기 전에

export class Test {


  hello:string;
  world:string;


}

게터 및 세터 생성 후

export class Test {


  private _hello:string;
  private _world:string;

  get hello(): string {
    return this._hello;
  }

  set hello(value: string) {
    this._hello = value;
  }

  get world(): string {
    return this._world;
  }

  set world(value: string) {
    this._world = value;
  }
}

getter/setter는 속성 이름과 일치하는 이름을 가질 수 없음 - 다음 항목은 작동하지 않음:

class A {
   get world() {
      return this.world;
   }
}

따라서 일반적인 패턴은 내부 속성의 이름을 세터/게터처럼 밑줄의 판으로만 지정하는 것이다.

class A {
   get world() {
      return this._world;
   }
}

JS와 따라서 TS에는 런타임 캡슐화가 없기 때문에, 밑줄은 대개 내부/개인/인캡슐화된 속성/변수를 나타낸다.

하지만 그 무엇도 당신에게 밑줄을 사용하도록 강요하지 않는다.getter/setter의 이름을 다르게 지정하면 밑줄 추가를 피할 수 있다.

class A {
   get getWorld() {
      return this.world;
   }
}   

다음 필드에 사용할 다른 접두사를 지정할 수 있음Settings | Editor | Code Style | TypeScript | Code Generation,Naming conventions/Field prefix그러나 접두사를 비워 두면TS2300:Duplicate identifier오류

참조URL: https://stackoverflow.com/questions/45167199/why-are-underscores-added-to-fields-of-a-typescript-class-in-angular4

반응형