규칙 8.12
이 페이지에서

규칙 8.12

8장, 함수와 진입점 테스트

A private name #x must be emitted without its #: a field as the struct member x, a method as Owner_x, an accessor as Owner_get_x and Owner_set_x, a static field as Owner_x. It may be named only inside the body of the class that declares it, which is TypeScript’s rule and which the front end enforces because it does not run the checker; a public name never reaches a private member, and an object literal, a spread and a destructuring pattern do not reach one either. Two members of one class chain that would share an emitted name (#x beside x, a static field beside a function of its name, or #x declared by a class and again by one that extends it) must be refused.

규칙 본문과 그 아래 항목은 설계 문서에 적힌 컴파일러 원문이라 한국어 페이지에서도 영어로 둡니다.

근거

WGSL and GLSL ES 3.00 have no private member and no # in a name, so privacy is a property of the source that the front end keeps, and it can keep it only while no emitted name stands for two members.

출처

ECMAScript private names as TypeScript spells them (TS18013 for an access from outside, TS2741 for a literal of such a class); Rule 3.2; surface §26.

검증 방식

테스트로 확인합니다. 테스트나 게이트 스크립트, CI 워크플로가 이 규칙을 가리키고, 아래 파일 가운데 하나라도 규칙을 더는 가리키지 않으면 추적 검사가 실패합니다.

컴파일러가 이 규칙을 적용하는 곳을 규칙이 직접 적은 내용입니다.

TS8035 CLASS_MEMBER for an access from outside the class, for two members on one function name and for a static field and a function on one module name (The static field "Base.#n" and the function "Base.n" would both be "Base_n": a private name is emitted without its "#". Rename one of them.), TS8010 STRUCT_FIELD for two members on one struct member and for an object literal of a class with a private field, pinned by src/compiler/ts/class-syntax.test.ts; examples/class-syntax.shade.ts.

커밋 c66579bf에서 이 규칙을 확인하는 파일입니다. 파일마다 규칙을 처음 가리키는 줄로 연결했습니다.

설명하는 절

커밋 c66579bf의 표면 문서에서 이 규칙을 설명하는 절입니다.

적용하는 오류 코드

규칙이 Enforced by 항목에서 가리키는 진단 코드와, 레지스트리 설명에서 이 규칙을 가리키는 진단 코드입니다.

TS8010 STRUCT_FIELD
An invalid struct field or declaration shape.
TS8035 CLASS_MEMBER
A class member shape the surface does not take, or a use of a member the class rules refuse, and a new that builds no class (Rule 8.13).

함께 보기

소스

커밋 c66579bf의 규칙 원문:

이 페이지 편집 문제 보고