{#each ...}λ₯Ό μ¬μ©νμ¬ μμ± κ°μ λ°λ³΅νλ €κ³ νλλ° Svelte κ΅¬μ± μμμ λ κ°μ§ μ λ ₯ (TypeScript νλ‘μ νΈ)μ΄ μμ΅λλ€.
<script lang="ts">
import Transition from './Transition/Transition.svelte';
type Options = { text: string, value?: string }[];
type OptionsGroup = Options[];
export let options: Options | OptionsGroup = [];
</script>
{#each options as option}
<div>example</div>
{/each}
κ° λͺ
λ Ήλ¬Έμ μ΅μ
μ νμ΄ Options | OptionsGroup
μ΄ λ κ²μΌλ‘ μμνμ§λ§ VS Codeλ λ€μκ³Ό κ°μ μ€λ₯λ₯Ό νμν©λλ€.
'μ΅μ | OptionsGroup 'μ'ArrayLike <{ν μ€νΈ : λ¬Έμμ΄ μ νμ λ§€κ° λ³μμ ν λΉ ν μ μμ΅λλ€. κ°? : λ¬Έμμ΄; }> '.
λΉλ λ° κ°λ° μμ μ΄ μ€λ₯μμ΄ μ μλνκΈ° λλ¬Έμ μ νν 무μμ΄ μλͺ»λκ³ μλμ§ μ λͺ¨λ₯΄κ² μ΅λλ€. VS Codeμ λ¬Έμ μΌλΏμ λλ€.
체κ³:
λν {#each}
μμ μ΄μν λ²κ·Έλ₯Ό λ°κ²¬νμ΅λλ€.
κ°λ₯ν κ°μ₯ μμ μ¬ν :
<script lang="ts">
let data: { name: string } | null = null,
someArr = [1, 2, 3];
</script>
{#if data}
<!-- Works fine -->
{data.name}
{#each someArr as _}
<!-- Highlights an error! -->
{data.name}
{/each}
{/if}
Mac, VS Code, μ΅μ νλ¬κ·ΈμΈ μ€ν. λλ κ·Έκ²μ΄μ΄ λ¬Έμ μ λ€μ κ΄λ ¨μ΄ μλ€κ³ μ§κ°νλ€.
@dkzlv κ·Έκ±° # 619
λλ μ΄κ²μ΄ μ°λ¦¬ μΈ‘μμ κ³ μΉ μ μλ€κ³ λλ €μνλ©° TypeScript λ¬Έμ μΈ κ² κ°μ΅λλ€. μ΄λ κ²νλ©΄ λμΌν μ€λ₯κ° λ°μν©λλ€.
function each<T>(
array: ArrayLike<T>, // or T[], doesnt matter for the error
callbackfn: (value: T, index: number) => any
): any{ /* doesnt matter */ };
each(options, a => a); // The same TS error
each
ν¨μλ κΈ°λ³Έμ μΌλ‘ each
-λΈλ‘μ μ ν κ²μ¬νλ λ° μ¬μ©λ©λλ€. νμ μμ μ±μ μμ§ μκ³ μ€λ₯λ₯Ό 침묡μν¬ λ°©λ²μ μ°Ύμ§ λͺ»νμ΅λλ€.
λμ μ΄κ²μ ν μ μμ΅λλ€. λλ μ μμ΄ typescript μ€λ₯κ° μλ€κ³ μκ°νκ³ μμμ μ‘°ν©μ μλνμ¬ μλν©λλ€.
<script lang="ts">
type Option = { text: string, value?: string };
type OptionsGroup = Option[];
export let options: Array<Option | OptionsGroup> = [];
</script>
{#each options as option}
<div>example</div>
{/each}
νΈμ§νλ€:
μ΄ λ μ νμ λμΌνμ§ μμ§λ§ λλΆλΆμ κ²½μ° μ°¨μ΄μ μ λν΄ μ κ²½ μ°μ§ μμ κ²μ
λλ€. κ΄μ¬μ΄ μλ€λ©΄ μΊμ€ν
νκΈ° μν΄ μ»€μ€ν
νμ
κ°λλ₯Ό μμ±ν΄μΌ ν κ²μ
λλ€.
μ€λͺ μ ν΄μ£Όμ μ κ°μ¬ν©λλ€. μΆμ²λλ‘ νμ΄νμ μμ νμΌλ©° κ±°μ ββν΄κ²°λμμ΅λλ€.