Language-tools: スロット要素自体にスロットプロップが見つかりません

作成日 2021年02月14日  ·  3コメント  ·  ソース: sveltejs/language-tools

バグを説明する
スロットプロパティはスロット要素内にのみあり、要素自体にはありません。 Svelteでは要素のプロパティを使用できるため、エラーは少し誤解を招く可能性があります。 おそらく、十分に厳密な設定でTypeScriptを使用した場合にのみ、エラーとして表示されます。

再現するには
スロットプロパティを使用してコンポーネントを作成し、プロパティを宣言する要素のプロパティを使用します(ここではclass使用法に関するエラー):

<Component n={10}>
    <div slot="item" let:zebra class={zebra}>Hello {zebra}</div>
</Component>

[REPL]

予想される行動
スロットプロパティはスコープ内にあり、エラーは発生しません。

スクリーンショット
image

システム(以下の情報を入力してください):

  • OS:Windows 1064ビット
  • IDE:VSCode
  • プラグイン/パッケージ:VSCode用のSvelte
Fixed bug

全てのコメント3件

タグを囲んで、レベルアップでjsx-transformationをプルする必要があります。 したがって、たとえばこのテストでは、次のようになります。

<>{() => { let {thing:{ a }} = __sveltets_instanceOf(Component).$$slot_def['default'];<><Component>
    <h1>Hello { a }</h1>
</Component></>}}</>

@dummdidumm修正ありがとうございます

これをテストしたところ、 let:propが使用された後でも、タイプエラーではなくsvelte警告が表示されます。

'prop'が定義されていません[svelte(missing-declaration)]

スクリーンショットの例:

image

ただし、生成された出力は順序に関係なく機能します。 もちろん、回避策として、属性を並べ替えてエラーを取り除くこともできます。

これはSvelteコンパイラのバグです。そのためにhttps://github.com/sveltejs/svelte/issues/6009を作成しました。

このページは役に立ちましたか?
0 / 5 - 0 評価

関連する問題

johanbissemattsson picture johanbissemattsson  ·  4コメント

PatrickG picture PatrickG  ·  3コメント

maximedupre picture maximedupre  ·  5コメント

vatro picture vatro  ·  3コメント

Kingwl picture Kingwl  ·  6コメント