λ²κ·Έ μ€λͺ
μΌλ° JSμ TS λͺ¨λμ νΌλλλ μ½λ μμ±μ κ²½ννκ³ μμ΅λλ€. λ΄κ° λκ° μλͺ» μ€μ νλμ§ νμ€νμ§ μμ΅λλ€.
μ¬ννλ €λ©΄
Parent.svelte
λ° Child.svelte
κ΅¬μ± μμλ₯Ό μ¬μ©ν κ°λ¨ν μ€μ μ°Έμ‘° :
// Parent.svelte
<script>
import {onMount} from "svelte"
import Child from "./Child.svelte"
let child
onMount(()=> {
})
</script>
<Child bind:this={child} />`
// Child.svelte
<script>
export let foo
export let bar = undefined
export const baz = () => {
console.log("executed function 'baz'!")
}
</script>
<div>
foo is: <em>{foo}</em><br/>
bar is: <em>{bar}</em>
</div>
<script></script>
JS :νμ κ΅¬μ± μμμ μ½λ μμ±μλ bar
, baz
, foo
, ref
λ±μ΄ νμλ©λλ€.
μμ : foo
λ° bar
ref
κ°μλ μ΄μ λ 무μμ
λκΉ?bar
, baz
, foo
λ λͺ¨λ μ ν μ¬ν (? :)μΌλ‘ λμ΄λ©λλ€.
μμ : bar
μ νμ , baz
λμ΄λμ§ μμ, foo
νμ (μ½μ κ²½κ³ μ°Έμ‘°).
child
-referenceμ λν μ½λ μμ±λ svelte2tsx κ΄λ ¨ νλͺ© μΈμλ νΌλ μ€λ½μ΅λλ€.
foo
μ΄ λμ΄λμ΄ μμ§λ§ μ‘μΈμ€ ν μλ μμ§λ§ (μ½μ μ€λ₯ μ°Έμ‘°) baz
μ (λ) λμ΄λμ§ μμ΅λλ€.
μμ λ¨ : foo
μ΄ (κ°) λμ΄λμ§ μμ, baz
κ° (κ°) λμ΄ λ¨
baz
κ° λͺ©λ‘μ μμ§λ§ νΈμΆ ν μ μμΌλ©° μμλλ‘ μλν©λλ€ (μ½μ λ‘κ·Έ μ°Έμ‘°).
<script lang="typescript"></script>
TS λ²μ :// Parent.svelte
<script lang="typescript">
import {onMount} from "svelte"
import Child from "./Child.svelte"
let child:Child
onMount(()=> {
})
</script>
<Child bind:this={child} />`
// Child.svelte
<script lang="typescript">
export let foo: number
export let bar: number = undefined
export const baz = (): void => {
console.log("executed function 'baz'!")
}
</script>
<div>
foo is: <em>{foo}</em><br/>
bar is: <em>{bar}</em>
</div>
νμ κ΅¬μ± μμμ μ½λ μμ±μλ bar
, baz
, foo
, ref
λ±μ΄ νμλ©λλ€.
μμ : foo
λ° bar
+ λ±
bar
, baz
, foo
λ λͺ¨λ μ ν μ¬ν (? :)μΌλ‘ λμ΄λ©λλ€.
μμ : bar
μ νμ , baz
λμ΄λμ§ μμ, foo
νμ (μ½μ κ²½κ³ μ°Έμ‘°).
child
μμ μ½λ μμ±-μ°Έμ‘°λ $$prop_def
λ° $$slot_def
$$prop_def
μ‘μΈμ€νλ©΄ λͺ©λ‘μ bar
, baz
, foo
κ° ν¬ν¨λ©λλ€ ( baz
λ§ μμ).foo
λ₯Ό μ€μ νλ €κ³ νλ©΄ "Cannot read ..."
μ€λ₯κ° λ°μνμ§λ§ "Props cannot be read directly from the component ..."
κ° μμλ©λλ€.$$prop_def.baz()
νΈμΆμ΄ μλνμ§ μμ΅λλ€ (μ½μ μ€λ₯ μ°Έμ‘°).child.baz()
νΈμΆμ μμλλ‘ μλνμ§λ§ (console.log μ°Έμ‘°) λμ΄λμ§λ μμμ§λ§ VS μ½λμμ μ€λ₯λ‘ νμλ©λλ€ : "Property 'baz' does not exist on type 'Child__SvelteComponent_'. (ts2339)
μ½λ μμ±μ μ€μ λ‘ λ무 νΌλ μ€λ½κ±°λ μλͺ»λμ΄μ λ΄κ° μλͺ» ꡬμ±νλμ§ νμ€νμ§ μμ΅λκΉ? π€ κ·Έλ κ² κ°μ νλ€λ©΄ μ΄λ€ ννΈλΌλ λλ¨ν κ°μ¬νκ² μ΅λλ€!
μμ€ν (λ€μ μ 보λ₯Ό μμ±νμμμ€) :
κ΄λ ¨ package.json
"rollup": "^2.21.0",
"rollup-plugin-svelte": "^5.2.3",
"@rollup/plugin-commonjs": "^14.0.0",
"@rollup/plugin-node-resolve": "^8.4.0",
"@rollup/plugin-typescript": "^5.0.2",
"svelte": "^3.24.0",
"svelte-preprocess": "^4.0.8",
"tslib": "^2.0.0",
"typescript": "^3.9.7"
tsconfig.json
"compilerOptions": {
"target": "es2017",
"strict": false,
"moduleResolution": "node",
"allowJs": false,
"lib": [
"es2017", "DOM"
],
"types": [
"svelte"
],
"baseUrl": "."
},
"include": [
"./src"
]
}
κ°μ¬ν©λλ€!
λΉμ μ μλͺ» μ€μ νμ§ μμκ³ , λΉμ μ ν λ²μ λ§μ λ¨μ μ λ°κ²¬νμ΅λλ€ π
μ, μ’μμ, λΉ λ₯Έ λ΅μ₯ κ°μ¬ν©λλ€!
- foo μ ν μ¬ν : μ격 λͺ¨λκ° μκΈ° λλ¬Έμ λͺ¨λ μνμ΄ μ ν μ¬νμΌλ‘ νμλ©λλ€. μ΄ κ²°μ μ λ€μ κ²ν ν΄μΌ ν μλ μμ΅λλ€.
μ’μ,μ΄ ATMμ λν λ΄ μ견μ 곡μ ν μ μμ΅λλ€. λ¨Όμ νμΈ / κΈ°μ΅νμ§ μμ μ΄μ λ₯Ό κΈ°μ΅ν΄μΌν©λλ€. π€
λΉ λ₯Έ μ λ°μ΄νΈ:
$$slot_def
λ±μ μ΄κ²μ΄ νμ
κ²μ¬μ κ΄ν κ²μ΄λ©° μ΄κ²μ μ¬μ©ν΄μλ μλλ€λ μ£Όμμ κ°μ§κ³ μμ΅λλ€.ref
λ μ΄μ νμλμ§ μμ
κ°μ₯ μ μ©ν λκΈ
λΉμ μ μλͺ» μ€μ νμ§ μμκ³ , λΉμ μ ν λ²μ λ§μ λ¨μ μ λ°κ²¬νμ΅λλ€ π