반응형
왜 밑줄이 각4의 활자 클래스의 필드에 추가되는가?
나는 Angul4 프로젝트를 만들고 IntelliJ를 사용하고 있다.새 클래스를 만든 다음 getter와 setter를 추가할 때마다.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
오류
반응형
'Programing' 카테고리의 다른 글
useMemo가 작동하지 않는 이유내가 잘못 쓰고 있는 건가? (0) | 2022.04.09 |
---|---|
Python __str_ 대 __unicode___ (0) | 2022.04.09 |
Google 글꼴 사전 로드 (0) | 2022.04.09 |
Nuxt TTFB 향상 (0) | 2022.04.09 |
Vue.js에게 강제로 재장전/재장전할 수 있는가? (0) | 2022.04.09 |