리스크립트는 string
, int
, float
등 친숙한 원시타입이 있습니다.
문자열
리스크립트에서 string
타입은 겹 따옴표를 사용해 구분합니다. (홑 따옴표는 밑에 설명할 문자 타입이 사용합니다)
let greeting = "Hello world!"let multilineGreeting = "Helloworld!"
var greeting = 'Hello world!';var multilineGreeting = 'Hello\n world!';
문자열을 이어 붙이려면 ++
를 사용합니다.
let greetings = "Hello " ++ "world!"
var greetings = 'Hello world!';
문자열 보간
문자열 보간은 문자열에 허용되는 특수한 문법입니다. 다음 경우에 사용합니다.
- 멀티라인 문자열
- 이스케이프 없이 특수 문자 사용
- 보간
- 유니코드 핸들링
let name = "Joe"let greeting = `HelloWorld👋${name}`
var name = 'Joe';var greeting = 'Hello\nWorld\n👋\n' + name + '\n';
이는 특수문자를 이스케이프 할 필요가 없다는 점을 빼고 자바스크립트의 백틱(`) 문자열 보간법과 같습니다.
문자열 보간을 하려면 바인딩을(위 예제에서는 name
) 문자열로 변환해야합니다. 보간을 통해 바인딩을 암시적으로 문자열로 변환하려면 앞에 j
를 추가하세요.
let age = 10let 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 이고 true
나 false
가 될 수 있습니다. boolean이 반환되는 일반 연산자를 확인하세요.
&&
: 논리 and.||
: 논리 or.!
: 논리 not.<=
,>=
,<
,>
==
: 구조적 동등성, 깊은 비교:(1, 2) == (1, 2)
는true
. 편리하지만 사용에 주의해야합니다.===
: 참조 동등성, 얕은 비교.(1, 2) === (1, 2)
는false
.let myTuple = (1, 2); myTuple === myTuple
은true
.!=
: 구조적 비동등.!==
: 참조 비동등.
리스크립트의 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
으로 컴파일 됩니다. 유닛은 다양한 곳에서 플레이스홀더로 사용되는 더미 타입입니다.