다른 여러 언어들처럼 리스크립트는 코드 조각을 속성으로 선언해 추가적인 기능을 얻는 것을 허용합니다. 여기 예시가 있습니다.
@bs.inlinelet mode = "dev"let mode2 = mode
var mode2 = 'dev';
@bs.inline
어노테이션을 사용하면 mode
의 값은 인라인으로 사용합니다. (자바스크립트 출력을 보세요) 우린 이런 어노테이션을 "속성" (또는 자바스크립트에서는 "데코레이터"라고 부릅니다)
속성은 @
로 시작하고 사용되는 부분 이전에 선언됩니다. 위의 예시처럼, let 바인딩에 연결됩니다.
사용
대부분에 속성을 사용할 수 있습니다. 추가 데이터 또한 함수 호출처럼 시각적으로 사용합니다. 여기 몇가지 자주 쓰는 속성의 예시가 있습니다. (다음 섹션에서 설명합니다)
@@warning("-27")@unboxedtype a = Name(string)@bs.val external message: string = "message"type student = {age: int,@bs.as("aria-label") ariaLabel: string,}@deprecatedlet customDouble = foo => foo * 2@deprecated("Use SomeOther.customTriple instead")let customTriple = foo => foo * 3
@@warning("-27")
는 파일 전체에 적용되는 스탠드 얼론 속성입니다. 이 속성은@@
구문과 함께 시작합니다. 여기서 이 속성은 데이터"-27"
을 전달합니다.@unboxed
는 타입 정의에 사용합니다.@bs.val
는external
구문과 같이 사용합니다.@bs.as("aria-label")
는ariaLabel
레코드 필드에 사용됩니다.@deprecated
는customDouble
표현에 사용됩니다. 이 속성은 컴파일할 때 사용자에게 deprecated 경고를 보여줍니다.@deprecated("Use SomeOther.customTriple instead")
속성은customTriple
deprecation 되는 이유를 문자열로 보여줍니다.
확장 구문 (Extension Points)
속성의 다른 카테고리입니다, "확장 구문"이라 불립니다. (초기 시스템에서 남은 용어입니다)
%raw("var a = 1")
var a = 1;
확장 구문은 아이템에 표시되는 어노테이션이 아닙니다. 확장 구문이 바로 아이템입니다. 주로 컴파일러가 암시적으로 다른 항목을 대체하는 자리표시자 역할을 합니다.
확장 구문은 %
로 시작합니다. 단독 확장 구문(@@
처럼 독립된 일반 속성 구문과 비슷합니다)은 %%
로 시작합니다.