λͺ©νλ μ€νλ₯Ό μ½κ² μ‘μλ΄κ³ κ΅¬μ± μμμμ μ λ¬νλ λͺ¨λ κ°λ₯ν μ΄λ²€νΈλ₯Ό μ°Ύλ λ° λμμ΄ λλ κ²μ λλ€. κ²°κ΅, μ λ ₯(μν)μ κ°λ ₯ν κ³μ½μ κ°μ§ μ μμ§λ§ μΆλ ₯(μ΄λ²€νΈ)μ κ·Έλ μ§ μμ μ΄μ κ° μμ΅λλ€. μ¬μ€, propsμ κ²½μ°λ³΄λ€ ν¨μ¬ λ μ€μν©λλ€. λμ€ν¨μΉλ νμΌμ μ΄λ κ³³μμλ λ°μν μ μμ§λ§ propsλ μΌλ°μ μΌλ‘ 맨 μμ κΉλνκ² λ¬ΆμΈ μνμ΄κΈ° λλ¬Έμ λλ€.
μ§κΈμ on:qoidfoqidjoiqsjd
λ₯Ό μ μ
λ ₯ν μ μμ΅λλ€.
μ»΄νμΌλ¬κ° μ΄λ₯Ό μν΄ μ¬μ©μ μ§μ μ£Όμμ μ¬μ©νλ Flex: https://github.com/apache/flex-sdk/blob/master/frameworks/projects/mx/src/mx/core/Container.as#L97
μλ§λ μ°λ¦¬λ export type Events = {name: 'eventA', data: number} | ...
μ κ°μ νΉλ³νκ³ μμ½λ κ·μΉμ κ°μ§ μ μμ΅λλ€.
TSDocμ΄ μλΉμ μΈ‘ ν΄νμΌλ‘ μ΄μ΄μ§κ² νλ κ²μ μΌμ΄ν¬μ μ₯μμ΄ λ κ²μ
λλ€.
μ΄κ²μ΄ μ½κ² ꡬνλμ§ μλ μ΄μ λ κ°λ₯ν λͺ¨λ μ΄λ²€νΈλ₯Ό μμ§νλ κ²μ΄ propsλ₯Ό μμ§νλ κ²λ³΄λ€ ν¨μ¬ μ΄λ ΅κΈ° λλ¬Έμ λλ€. μ΄κ²μ΄ μνμ©μ΄κΈ° λλ¬Έμ μλ μμ±μ΄ μλνμ§ μλ μ΄μ μ΄κΈ°λ ν©λλ€.
λ΄λΆλ₯Ό μ΄ν΄λ³΄λ©΄ propsκ° jsx propsλ₯Ό ν΅ν΄ ꡬνλλ€λ κ²μ λλ€. μ΄λ²€νΈλ μμ§ μ ν λλ¬Έμ΄ μλλλ€. μ¬μ©μκ° λͺ μμ μΌλ‘ μ λ ₯νλ©΄ λ³κ²½λ μ μμ΅λλ€. μΈκΈλ λ¬Έμ λλ¬Έμ λ°μ‘λ μ΄λ²€νΈλ₯Ό "μ μμ μΌμΉνμ§ μμ"μΌλ‘ νμν μ μμ΅λλ€.
μμ½λ μΈν°νμ΄μ€λ₯Ό κ°λ κ²μ΄ μμΌλ‘ λμκ° κ°λ₯μ±μ΄ λμ΅λλ€. μ°λ¦¬λ μ΄μ μ μΌλ° propsμ λ§₯λ½μμ μ΄μ λν΄ μκ°νμ΅λλ€. μμ½λ μΈν°νμ΄μ€ μ΄λ¦μ ComponentEvents
, ComponentProps
, ComponentSlots
λ° ComponentDef
μμ΅λλ€.
κ΄λ ¨ #304
on:<event>
λ₯Ό μ¬μ©νμ¬ μλ μμ±μ μ»λ κ²μ λ€λ₯Έ λ°©μμΌλ‘ μνν΄μΌ ν©λλ€. μλνλ©΄ νλ μλμμ μ΄λ¬ν μλ μμ±μ μ»κΈ° μν΄ JSXλ₯Ό μ¬μ©νκΈ° λλ¬Έμ
λλ€. "μ¦μ" μλ μμ± κΈ°λ₯μ μ¬μ©νλ €λ©΄ on:<event>
κ° μνμ μΌλΆλ‘ μμ΄μΌ ν©λλ€. κ·Έλ¬λ μ΄κ²μ JSXκ° propsμ :
μ κ°μ λ¬Έμλ₯Ό νμ©νμ§ μκΈ° λλ¬Έμ λΆκ°λ₯ν©λλ€.
λ λ€λ₯Έ λ¬Έμ λ νμ¬ TypeScriptλ‘ μνν μ μλ on:
μμ μ΄λ²€νΈ μ ν μ μλ₯Ό λ³νν΄μΌ νλ€λ κ²μ
λλ€( κ΄λ ¨ TS λ¬Έμ ).
μ΄λ¬ν μ μ½ μ‘°κ±΄μμ λ κ°μ§ μ루μ μ΄ λ°μν©λλ€.
__on__<eventName>: ..
μ κ°μ μ΄λ²€νΈλ₯Ό μ
λ ₯νλΌκ³ λ§νλ©΄ μΈμ΄ μλ²μμ μλ μμ± μ€μ __on__
λ₯Ό on:
λ‘ λ°κΏλλ€. μ΄κ²μ μ°¨μ μ±
μ΄κ³ λΆμμ§κΈ° μ¬μ΄ λλμ
λλ€.μ¬μ©μκ° μ΄λ²€νΈλ₯Ό λͺ
μμ μΌλ‘ μ
λ ₯νλ κ²½μ° $on
λ©μλ μ μκ° CustomEvent<any>
λλμκ°μ§ μλ λ³νμ ν΅ν΄ #386μ΄ λ³ν©λ ν " on:XXX
κ° μ‘΄μ¬νμ§ μμ΅λλ€" μ€λ₯κ° μ½κ² λ°μν μ μμ΅λλ€. .
https://github.com/sveltejs/svelte/pull/5260 μ΄ λ¦΄λ¦¬μ€λλ©΄ svelte2tsx
λ₯Ό μ
λ°μ΄νΈνμ¬ createEventDispatcher
κ²μνκ³ μ ν μ£Όμμ΄ μλμ§ νμΈνκ³ κ·Έλ λ€λ©΄ μ μ ν μ νμ κ°μ Έμ€λ λ° μ¬μ©ν©λλ€.
μ΄μ Svelte 3.25.0μ λμ
λ createEventDispatcher
νμ΄νμ νμ©ν μ μμ΅λλ€. νλ©΄
const dispatch = createEventDispatcher<{foo: string; bar: boolean}>();
κ΅¬μ± μμ λ΄μμ dispatch
λν κ°λ ₯ν μ
λ ₯μ μ»κ³ foo
/ bar
μ΄λ²€νΈλ₯Ό μμ νλ©΄ κ°λ ₯ν μ
λ ₯μ μ»μ μ μμ΅λλ€.
on:foo={e => ... // <- e is of type CustomEvent<string>
λν μ΄μ μ΄λ²€νΈμ λν ν¨μ¬ λ λμ μλ μμ± κΈ°λ₯μ μ¬μ©ν μ μμ΅λλ€. κ·Έλ¬λ μ¬μ ν λ€λ₯Έ μ΄λ²€νΈλ₯Ό μμ ν μ μμΌλ―λ‘ " createEventDispatcher
ν΅ν΄ μ μλ μ΄λ²€νΈλ§ μμ λκΈ°"λΌλ μλ―Έμ μ ν μμ μ μ¬μ ν ComponentEvents
μΈν°νμ΄μ€λ₯Ό ν΅ν΄μλ§ κ°λ₯ν©λλ€. κ·Έλ¬λ μ°λ¦¬λ μ΄λ²€νΈλ₯Ό μ격νκ² λ§λλ 무μΈκ°(μλ§λ μ€ν¬λ¦½νΈ νκ·Έ μμ±)λ₯Ό μ 곡ν κ³νμ
λλ€.
κ΄λ ¨ λ¬Έμ: https://github.com/sveltejs/language-tools/blob/master/docs/preprocessors/typescript.md#typing -component-events
@dummdidumm
createEventDispatcher
λν μΌλΆ μμ μ΄λ²€νΈκ° μ νμ μμ νμ§ μλ μ΄μ μ λν μμ΄λμ΄κ° μμ΅λκΉ?
μμ:
// Component Foo
const dispatchFoo = createEventDispatcher<{foo: string; bar: boolean}>();
const dispatchBar = createEventDispatcher<{bar: string; baz: string}>();
// Component Bar
// e is CustomEvent<any>
on:foo="{(e) => handleFoo(e.detail.bar)}"
// e is CustomEvent<{baz: string}>
on:bar="{(e) => handleBar(e.detail.bar)}"
typescript μ»΄νμΌλ¬λ μμλλ‘ μ΄κ²μ ν¬μ°©ν©λλ€.
μμλ₯Ό λ³κ²½νλ©΄ λ€λ₯Έ κ²°κ³Όκ° μμ±λ©λλ€.
createEventDispatcher
μμκ° λ³κ²½λλ©΄ typescript μ»΄νμΌλ¬λ μ€λ₯λ₯Ό ν¬μ°©νμ§ μμ΅λλ€.
λ§μ§λ§ createEventDispatcher
λ§μ΄ 리μ€λμ μ νμ μμ±νλ κ²μΌλ‘ 보μ
λλ€.
// Component Foo
const dispatchBar = createEventDispatcher<{bar: string; baz: string}>();
const dispatchFoo = createEventDispatcher<{foo: string; bar: boolean}>();
// Component Bar
// e is CustomEvent<{bar: boolean}>
on:foo="{(e) => handleFoo(e.detail.bar)}"
// e is CustomEvent<any>
on:bar="{(e) => handleBar(e.detail.bar)}"
typescript μ»΄νμΌλ¬λ μ΄μ μ νμ΄ CustomEvent<any>
μ΄λ―λ‘ μ€λ₯λ₯Ό ν¬μ°©νμ§ μμ΅λλ€.
κ°μ₯ μ μ©ν λκΈ
μ΄μ Svelte 3.25.0μ λμ λ
createEventDispatcher
νμ΄νμ νμ©ν μ μμ΅λλ€. νλ©΄κ΅¬μ± μμ λ΄μμ
dispatch
λν κ°λ ₯ν μ λ ₯μ μ»κ³foo
/bar
μ΄λ²€νΈλ₯Ό μμ νλ©΄ κ°λ ₯ν μ λ ₯μ μ»μ μ μμ΅λλ€.λν μ΄μ μ΄λ²€νΈμ λν ν¨μ¬ λ λμ μλ μμ± κΈ°λ₯μ μ¬μ©ν μ μμ΅λλ€. κ·Έλ¬λ μ¬μ ν λ€λ₯Έ μ΄λ²€νΈλ₯Ό μμ ν μ μμΌλ―λ‘ "
createEventDispatcher
ν΅ν΄ μ μλ μ΄λ²€νΈλ§ μμ λκΈ°"λΌλ μλ―Έμ μ ν μμ μ μ¬μ νComponentEvents
μΈν°νμ΄μ€λ₯Ό ν΅ν΄μλ§ κ°λ₯ν©λλ€. κ·Έλ¬λ μ°λ¦¬λ μ΄λ²€νΈλ₯Ό μ격νκ² λ§λλ 무μΈκ°(μλ§λ μ€ν¬λ¦½νΈ νκ·Έ μμ±)λ₯Ό μ 곡ν κ³νμ λλ€.κ΄λ ¨ λ¬Έμ: https://github.com/sveltejs/language-tools/blob/master/docs/preprocessors/typescript.md#typing -component-events