시그니처 해석 방법
시그니처 섹션은 일반적으로 다음과 같은 형식으로 나타납니다.
vnode = m(selector, attributes, children)
인수 | 타입 | 필수 여부 | 설명 |
---|---|---|---|
selector | String|Object | 예 | CSS 선택자 또는 컴포넌트 |
attributes | Object | 아니오 | HTML 속성 또는 엘리먼트 속성 |
children | Array<Vnode>|String|Number|Boolean | 아니오 | 자식 vnode. 스플랫 인수 형태로 작성할 수 있습니다. |
반환값 | Vnode | vnode |
위 테이블의 시그니처 라인은 메서드의 일반적인 문법을 나타내며, 메서드 이름, 인수의 순서, 반환 값에 대한 변수명 규칙을 보여줍니다.
테이블의 인수 열은 각 행에서 설명하는 시그니처의 인수를 나타냅니다. returns
행은 메서드의 반환 값에 대한 정보를 표시합니다.
타입 열은 각 인수에 대해 예상되는 데이터 타입을 나타냅니다.
파이프(|
)는 나열된 타입 중 하나라도 해당하면 인수가 유효함을 의미합니다. 예를 들어 String|Object
는 selector
가 문자열 또는 객체 타입이 될 수 있음을 나타냅니다.
꺾쇠 괄호(< >
)는 Array
뒤에 올 경우 배열 요소의 타입을, Object
뒤에 올 경우 객체 속성의 타입을 나타냅니다. 예를 들어 Array<String>
은 문자열로만 이루어진 배열을 의미하며, Object<String,Component>
는 키가 문자열이고 값이 컴포넌트인 객체를 의미합니다.
경우에 따라 특정 객체 시그니처가 필요함을 나타내기 위해 기본 타입 대신 구체적인 타입이 사용될 수 있습니다. 예를 들어 Vnode
는 가상 DOM 노드 구조를 가진 객체입니다.
필수 여부 열은 인수가 필수인지 선택 사항인지를 나타냅니다. 선택적 인수는 null
또는 undefined
로 설정하거나 생략할 수 있으며, 생략하면 다음 인수가 해당 위치에 전달됩니다.
선택적 인수
대괄호 [ ]
로 묶인 함수 인수는 선택 사항입니다. 아래 예시에서 url
은 선택적 인수입니다.
m.request([url,] options)
스프레드
스플랫 인수는 인수가 배열일 때 대괄호를 생략하고, 메서드에 여러 인수를 가변적으로 전달할 수 있도록 하는 기능입니다.
예를 들어 m("div", {id: "foo"}, ["a", "b", "c"])
는 m("div", {id: "foo"}, "a", "b", "c")
와 같이 줄여서 작성할 수 있습니다.
스플랫은 자바스크립트로 컴파일되는 언어에서 유용하며, 일반적인 사용 사례에 대한 편리한 단축 표현을 제공합니다.
함수 시그니처
함수는 화살표(->
)로 표현됩니다. 화살표 왼쪽은 입력 인수의 타입을 나타내고, 오른쪽은 반환 값의 타입을 나타냅니다.
예를 들어 parseFloat
의 시그니처는 String -> Number
입니다. 이는 문자열을 입력으로 받아 숫자를 반환한다는 의미입니다.
여러 인수를 받는 함수는 괄호로 묶어 표시합니다. (String, Array) -> Number
컴포넌트 시그니처
컴포넌트는 m
함수를 호출하여 표현하며, 이때 첫 번째 인수인 선택자는 해당 컴포넌트와 관련된 설명에 정의된 상수로 설정됩니다.
vnode = m(m.route.Link, attributes, children)
인수 | 타입 | 필수 여부 | 설명 |
---|---|---|---|
attributes.href | Object | 예 | 이동할 대상 경로입니다. |
attributes.selector | String|Object|Function | 아니오 | 사용할 태그 이름을 설정합니다. 지정된 경우, m 에 대한 유효한 선택자여야 하며, 기본값은 "a" 입니다. |
attributes.options | Object | 아니오 | m.route.set 에 전달할 옵션을 설정합니다. |
attributes | Object | 아니오 | 반환되는 vnode에 적용할 다른 속성을 전달할 수 있습니다. |
children | Array<Vnode>|String|Number|Boolean | 아니오 | 이 링크의 자식 vnode. |
반환값 | Vnode | vnode. |
여기에 지정된 자식 엘리먼트는 별도의 언급이 없는 한 스플랫 인수 형태로 작성할 수 있습니다.
적절한 자식 노드나 속성이 없는 엘리먼트는 관련 매개변수를 완전히 생략할 수 있습니다.
vnode = m(Component, attributes)
인수 | 타입 | 필수 여부 | 설명 |
---|---|---|---|
attributes.href | Object | 예 | 대상 경로 |
attributes | Object | 아니오 | 반환되는 vnode에 적용할 다른 속성 |
반환값 | Vnode | vnode |