ReScript in Korean

속성 (데코레이터)

원문

다른 여러 언어들처럼 리스크립트는 코드 조각을 속성으로 선언해 추가적인 기능을 얻는 것을 허용합니다. 여기 예시가 있습니다.

@bs.inline
let mode = "dev"
let mode2 = mode
var mode2 = 'dev';

@bs.inline 어노테이션을 사용하면 mode의 값은 인라인으로 사용합니다. (자바스크립트 출력을 보세요) 우린 이런 어노테이션을 "속성" (또는 자바스크립트에서는 "데코레이터"라고 부릅니다)

속성은 @로 시작하고 사용되는 부분 이전에 선언됩니다. 위의 예시처럼, let 바인딩에 연결됩니다.

사용

대부분에 속성을 사용할 수 있습니다. 추가 데이터 또한 함수 호출처럼 시각적으로 사용합니다. 여기 몇가지 자주 쓰는 속성의 예시가 있습니다. (다음 섹션에서 설명합니다)

@@warning("-27")
@unboxed
type a = Name(string)
@bs.val external message: string = "message"
type student = {
age: int,
@bs.as("aria-label") ariaLabel: string,
}
@deprecated
let customDouble = foo => foo * 2
@deprecated("Use SomeOther.customTriple instead")
let customTriple = foo => foo * 3
  1. @@warning("-27")는 파일 전체에 적용되는 스탠드 얼론 속성입니다. 이 속성은 @@구문과 함께 시작합니다. 여기서 이 속성은 데이터 "-27"을 전달합니다.
  2. @unboxed는 타입 정의에 사용합니다.
  3. @bs.valexternal 구문과 같이 사용합니다.
  4. @bs.as("aria-label")ariaLabel 레코드 필드에 사용됩니다.
  5. @deprecatedcustomDouble 표현에 사용됩니다. 이 속성은 컴파일할 때 사용자에게 deprecated 경고를 보여줍니다.
  6. @deprecated("Use SomeOther.customTriple instead")속성은 customTriple deprecation 되는 이유를 문자열로 보여줍니다.

확장 구문 (Extension Points)

속성의 다른 카테고리입니다, "확장 구문"이라 불립니다. (초기 시스템에서 남은 용어입니다)

%raw("var a = 1")
var a = 1;

확장 구문은 아이템에 표시되는 어노테이션이 아닙니다. 확장 구문이 바로 아이템입니다. 주로 컴파일러가 암시적으로 다른 항목을 대체하는 자리표시자 역할을 합니다.

확장 구문은 %로 시작합니다. 단독 확장 구문(@@처럼 독립된 일반 속성 구문과 비슷합니다)은 %%로 시작합니다.