원시 타입(Primitive Types)
ReScript는 string
, int
, float
등과 같은 친숙한 원시 타입을 제공합니다.
문자열(String)
ReScript 문자열, 즉, string
타입은 큰 따옴표를 사용합니다(작은 따옴표는 아래 문자 타입에서 설명합니다).
문자열을 이어 붙이려면 ++
를 사용합니다.
문자열 보간
다음은 문자열에 허용되는 특수한 문법입니다.
이전과 같은 멀티라인 문자열
이스케이프 없는 특수 문자 사용
보간
올바른 유니코드 처리
이는 특수 문자를 이스케이프할 필요가 없다는 점을 제외하고는 JavaScript의 백틱(`) 문자열 보간법과 같습니다.
문자열 보간을 위해서, 바인딩(위의 예제에서는 name
)이 문자열이 아닌 경우 바인딩을 문자열로 변환해야 합니다. 보간을 통해 바인딩을 문자열로 암시적으로 변환하려면 앞에 다음과 같이 j
를 추가하세요.
사용법
API docs에 설명된 Js.String
API를 사용합니다. ReScript 문자열은 JavaScript 문자열에 대응되므로 두 표준 라이브러리에서 문자열 관련 작업을 혼합하고 매칭시킬 수 있습니다.
사용 팁과 트릭
여러분은 지금 즈음 좋은 타입 시스템을 가지고 있을 것입니다! 타입이 없는 언어에서는, 다음과 같이 문자열의 의미를 과부하 시키는 경우가 허다합니다.
유니크 id:
var BLUE_COLOR = "blue"
데이터 구조 식별자:
var BLUE = "blue" var RED = "red" var colors = [BLUE, RED]
객체 필드의 이름을 문자열로 접근:
person["age"] = 24
enum처럼 쓰는 경우:
if (audio.canPlayType() === 'probably') {...}
(ಠ_ಠ)그 외 ReScript의 대안에 익숙해지면 곧 알게 될 다른 말도 안 되는 사용법
JavaScript와 같은 언어의 열악한 문자열 타입에 과부하가 걸릴수록 타입 시스템(또는 팀 동료)에게서 도움 받기 힘들 것 입니다! ReScript는 위의 좋지 못한 문자열 사용 사례에 대해 간결하고 빠르고 유지 가능한 타입 및 자료 구조를 제공합니다. (추가 설명은 배리언트 섹션을 참고하세요)
문자(Char)
ReScript는 다음과 같이 단일 문자 타입을 가지고 있습니다.
참고: 문자 타입은 유니코드 또는 UTF-8을 지원하지 않기 때문에 추천하지 않습니다.
문자열을 문자로 변환할 때에는 String.get("a", 0)
를 사용하고, 문자를 문자열로 만들기 위해서는 String.make(1, 'a')
를 사용합니다.
정규 표현식
ReScript 정규 표현식은 대응하는 JavaScript에 맞게 깔끔하게 컴파일됩니다.
위와 같은 정규 표현식의 타입은 Js.Re.t
입니다. Js.Re 모듈 메뉴얼에는 JavaScript에서 볼 수 있는 정규 표현식 보조 기능이 포함되어 있습니다.
불리언(Boolean)
ReScript 불리언의 타입은 bool
이고, true
또는 false
가 될 수 있습니다. 일반 연산자로 다음과 같은 것들이 있습니다.
&&
: 그리고(and)||
: 또는(or)!
: 부정(not)<=
,>=
,<
,>
==
: 구조적 동등성, 심층적인 자료 구조 비교.(1, 2) == (1, 2)
는true
. 편리하지만 사용에 주의해야 합니다.===
: 참조 동등성, 얕은 비교.(1, 2) === (1, 2)
는false
.let myTuple = (1, 2); myTuple === myTuple
은true
.!=
: 구조적 비동등.!==
: 참조 비동등.
ReScript의 true/false
는 JavaScript true/false
로 컴파일됩니다.
정수
32비트 범위를 가지며, 만일 범위를 넘는 경우에 잘립니다. ReScript는 +
,-
,*
,/
등의 일반적인 연산자를 제공합니다. Js.Int에서 더 자세히 나와 있습니다.
JavaScript의 number를 바인딩할 때는 주의해야 합니다! ReScript 정수는 JavaScript 숫자보다 범위가 훨씬 작기 때문에 32비트 이상의 정수는 잘릴 수 있습니다. JS number를 바인딩할 때(특히, JavaScript Dates와 epoch time에) floats 사용을 권장합니다.
가독성을 향상시키기 위해 1_000_000
과 같은 숫자 리터럴 가운데에 밑줄을 넣을 수 있습니다. 밑줄은 세 자리마다가 아닌 숫자 내의 어디에나 임의의 위치에 배치할 수 있습니다.
부동 소수점(Floats)
플로트에는 +.
,-.
,*.
,/.
등의 다른 연산자가 필요합니다. 예를 들어, 0.5 +. 0.6
과 같이 사용합니다. Js.Float에서 더 자세히 알아보세요.
정수와 마찬가지로 리터럴 내에서 밑줄을 사용하여 가독성을 높일 수 있습니다.
Unit
unit
타입은 ()
라는 단일 값을 가지며, JavaScript의 undefined
로 컴파일됩니다. 다양한 장소에서 자리 표시자(placeholder)로 사용되는 더미 타입입니다. 발견하기 전까지는 필요 없을 것입니다.