ReScript in Korean

원시 타입

원문

리스크립트는 string, int, float 등 친숙한 원시타입이 있습니다.

문자열

리스크립트에서 string 타입은 따옴표를 사용해 구분합니다. (홑 따옴표는 밑에 설명할 문자 타입이 사용합니다)

let greeting = "Hello world!"
let multilineGreeting = "Hello
world!"
var greeting = 'Hello world!';
var multilineGreeting = 'Hello\n world!';

문자열을 이어 붙이려면 ++를 사용합니다.

let greetings = "Hello " ++ "world!"
var greetings = 'Hello world!';

문자열 보간

문자열 보간은 문자열에 허용되는 특수한 문법입니다. 다음 경우에 사용합니다.

  • 멀티라인 문자열
  • 이스케이프 없이 특수 문자 사용
  • 보간
  • 유니코드 핸들링
let name = "Joe"
let greeting = `Hello
World
👋
${name}
`
var name = 'Joe';
var greeting = 'Hello\nWorld\n👋\n' + name + '\n';

이는 특수문자를 이스케이프 할 필요가 없다는 점을 빼고 자바스크립트의 백틱(`) 문자열 보간법과 같습니다.

문자열 보간을 하려면 바인딩을(위 예제에서는 name) 문자열로 변환해야합니다. 보간을 통해 바인딩을 암시적으로 문자열로 변환하려면 앞에 j를 추가하세요.

let age = 10
let message = j`Today I am $age years old.`
var message = 'Today I am ' + 10 + ' years old.';

사용법

API docs에 설명된 Js.String API를 사용합니다. 리스크립트 문자열은 자바스크립트 문자열에 매핑되므로 두 표준 라이브러리로 문자열 관련 작업을 혼합하거나 매치시킬 수 있습니다.

팁과 트릭

리스크립트는 좋은 타입 시스템을 가진 언어입니다! 타입이 없는 언어는 문자열을 다음처럼 사용해 문자열 자체의 의미를 다르게 사용하는 경우가 많습니다.

  • 유니크 id: var BLUE_COLOR = "blue"
  • 데이터 구조 식별자: var BLUE = "blue" var RED = "red" var colors = [BLUE, RED]
  • 객체의 필드 이름을 문자열로 접근: person["age"] = 24
  • enum처럼 쓰는 경우: if (audio.canPlayType() === 'probably') {...} (ಠ_ಠ)
  • 그 외 리스크립트에 익숙해지면 끔찍한 다른 패턴을 찾을 수 있습니다.

자바스크립트처럼 단점이 많은 문자열 타입에 리스크립트 타입시스템(또는 팀원)이 도움을 줄 수 있습니다. 리스크립트에서는 위의 좋지 못한 문자열 사용의 대안으로 빠르고 유지보수 가능한 타입과 자료구조를 제공합니다. (나중에 배리언트 섹션에서 설명합니다)

문자

리스크립트는 단일 문자 타입을 가지고 있습니다.

let firstLetterOfAlphabet = 'a'
var firstLetterOfAlphabet = /* "a" */ 97;

Note: 문자 타입은 유니코드 또는 UTF-8을 지원하지 않기 때문에 추천하지 않습니다.

문자열을 문자로 변환하기 위해서는 String.get("a",[0])를 사용하고 문자를 문자열로 만들기 위해서는 String.make(1, 'a')를 사용합니다.

정규 표현식

리스크립트 정규 표현식은 자바스크립트에 대응하는 부분으로 알맞게 컴파일됩니다.

let r = %re("/b/g")
var r = /b/g;

위와 같은 정규 표현식은 Js.Re.t 타입입니다. Js.Re 모듈 메뉴얼에 자바스크립트에 있는 정규 표현식 헬퍼들이 포함되어 있습니다.

Boolean

리스크립트 boolean은 bool type 이고 truefalse가 될 수 있습니다. boolean이 반환되는 일반 연산자를 확인하세요.

  • &&: 논리 and.
  • ||: 논리 or.
  • !: 논리 not.
  • <=, >=, <, >
  • ==: 구조적 동등성, 깊은 비교: (1, 2) == (1, 2)true. 편리하지만 사용에 주의해야합니다.
  • ===: 참조 동등성, 얕은 비교. (1, 2) === (1, 2)false. let myTuple = (1, 2); myTuple === myTupletrue.
  • !=: 구조적 비동등.
  • !==: 참조 비동등.

리스크립트의 true/false는 자바스크립트의 true/false로 컴파일됩니다.

정수

32비트 범위를 가지고 만일 넘어가는 경우에 잘립니다. 리스크립트는 일반적인 연산자를 제공합니다. +, -, *, / 등... Js.Int 모듈에 더 자세한 설명이 있습니다.

자바스크립트 number를 바인딩할 때는 주의해야합니다! 32비트 이상의 정수는 잘릴 수 있습니다. 자바스크립트 number를 바인딩(특히 날짜)할 때 가능하면 float를 사용하세요.

가독성 향상을 위해, 1_000_000과 같은 숫자 리터럴 중간에 밑줄을 넣을 수 있습니다. 밑줄은 3자리마다 넣어야하는 건 아니고 숫자 내 어디에나 사용할 수 있습니다.

실수

실수 연산은 0.5 +. 0.6 처럼 사용합니다. 사용하는 연산자는 다음과 같습니다. +., -., *., /. 등... Js.Float 문서에서 상세한 설명을 찾아보세요.

정수와 마찬가지로 가독성 향상을 위해 실수 리터럴 내에 밑줄을 사용할 수 있습니다.

유닛(unit)

unit 타입은 ()라는 단일 값을 가집니다. unit 타입은 자바스크립트의 undefined으로 컴파일 됩니다. 유닛은 다양한 곳에서 플레이스홀더로 사용되는 더미 타입입니다.