Language-tools: $store рдореВрд▓реНрдпреЛрдВ рдХреЛ рдирд╖реНрдЯ рдХрд░рддреЗ рд╕рдордп рдЕрдирдкреЗрдХреНрд╖рд┐рдд рддреНрд░реБрдЯрд┐

рдХреЛ рдирд┐рд░реНрдорд┐рдд 11 рдЕрдЧре░ 2020  ┬╖  6рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: sveltejs/language-tools

рдмрдЧ рдХрд╛ рд╡рд░реНрдгрди рдХрд░реЗрдВ
рдХрдерди $: ({ value } = $store); рд╡реИрдз рд╡рд╛рдХреНрдпрд╡рд┐рдиреНрдпрд╛рд╕ рд╣реИ рдЬрдм value $store рдХреА рд╕рдВрдкрддреНрддрд┐ рд╣реИ рдФрд░ $store рдПрдХ рд╕реНрд╡реЗрд▓реНрдЯреЗ рд╕реНрдЯреЛрд░ рд╣реИред рдпрд╣ рд╕рд╛рдорд╛рдиреНрдп рд╡рд┐рдирд╛рд╢рдХрд╛рд░реА рдХреА рддрд░рд╣ рд╡реНрдпрд╡рд╣рд╛рд░ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЕрджреНрдпрддрдиреЛрдВ рдХреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛рд╢реАрд▓ рд╣реИред рдпрд╣ рдПрдХ рддреНрд░реБрдЯрд┐ рдЙрддреНрдкрдиреНрди рдХрд░рддрд╛ рд╣реИ рдЬрдм lang="ts" ред

# App.svelte
------------
<script lang="ts">
  import data from "./store";
  $: ({ count } = $data);
</script>
jd:/svelte-playground $ yarn svelte-check                                                                                                                                                                                                                      [0:30]
yarn run v1.22.4
warning package.json: No license field
$ /home/jd/Projects/svelte-playground/node_modules/.bin/svelte-check

Loading svelte-check in workspace: /home/jd/Projects/svelte-playground
Getting Svelte diagnostics...
====================================

/home/jd/Projects/svelte-playground/src/App.svelte:3:9
Error: No value exists in scope for the shorthand property 'count'. Either declare one or provide an initializer. (ts)
;
  $: ({ count } = $data

====================================
svelte-check found 1 error and 0 warnings
error Command failed with exit code 1.
info Visit https://yarnpkg.com/en/docs/cli/run for documentation about this command.

рдкреНрд░рдЬрдирди рдХрд░рдирд╛
1) рдЗрд╕ рдЖрд░рдИрдкреАрдПрд▓ рд╕реЗ рд╢реБрд░реВ рдХрд░реЗрдВ: рд▓рд┐рдВрдХ
2) рдЗрд╕реЗ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░реЗрдВ рдФрд░ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ TS рд╕рдкреЛрд░реНрдЯ рдЬреЛрдбрд╝реЗрдВ: рд▓рд┐рдВрдХ
3) рд╕рдВрд╢реЛрдзрд┐рдд App.svelte рдЬреЛрдбрд╝рдХрд░ lang="ts" рдЙрджреНрдШрд╛рдЯрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП <script> рдЯреИрдЧред (рдЙрдкрд░реЛрдХреНрдд рд╕реНрдирд┐рдкреЗрдЯ рджреЗрдЦреЗрдВ)
4) svelte-check рдЪрд▓рд╛рдПрдБ

рдЕрдкреЗрдХреНрд╖рд┐рдд рд╡реНрдпрд╡рд╣рд╛рд░
рдпрд╣ рдорд╛рдиреНрдп Svelte/JS рд╕рд┐рдВрдЯреИрдХреНрд╕ рд╣реИ рдФрд░ рдЙрд╕рдХрд╛ рдХреЛрдб рдареАрдХ рдЪрд▓рддрд╛ рд╣реИред рдпрд╣ рдЯрд╛рдЗрдкрдЪреЗрдХрд░ рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХрд╛ рдЙрддреНрдкрд╛рджрди рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред

рд╕реНрдХреНрд░реАрдирд╢реЙрдЯ
рдпрджрд┐ рд▓рд╛рдЧреВ рд╣реЛ, рддреЛ рдЕрдкрдиреА рд╕рдорд╕реНрдпрд╛ рд╕рдордЭрд╛рдиреЗ рдореЗрдВ рд╕рд╣рд╛рдпрддрд╛ рдХреЗ рд▓рд┐рдП рд╕реНрдХреНрд░реАрдирд╢реЙрдЯ рдЬреЛрдбрд╝реЗрдВред
image

рд╕рд┐рд╕реНрдЯрдо (рдХреГрдкрдпрд╛ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЬрд╛рдирдХрд╛рд░реА рдХреЛ рдкреВрд░рд╛ рдХрд░реЗрдВ):

  • рдУрдПрд╕: рд╡рд┐рдВрдбреЛрдЬрд╝
  • рдЖрдИрдбреАрдИ: рд╡реАрдПрд╕рд╕реАрдУрдбреА (рд╡рд┐рдВрдбреЛрдЬ-рд▓рд┐рдирдХреНрд╕ рд╕рдмрд╕рд┐рд╕реНрдЯрдо)
  • рдкреНрд▓рдЧрдЗрди / рдкреИрдХреЗрдЬ:

    • VSCode рдХреЗ рд▓рд┐рдП рд╡реНрдпрд╛рдкрдХ

    • рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдЬрд╛рдВрдЪ

    • @tsconfig/svelte

рд╕рднреА 6 рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

рд╡реИрдХрд▓реНрдкрд┐рдХ рд╣рд▓
рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ Svelte рд╕реНрдЯреЛрд░реНрд╕ рдкрд░ рдбрд┐рд╕реНрдЯреНрд░рдХреНрдЯрд┐рдВрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рди рдХрд░реЗрдВред рдпрд╣ рдЖрджрд░реНрд╢ рдирд╣реАрдВ рд╣реИ рд▓реЗрдХрд┐рди рдЕрд╡рд░реЛрдзрдХ рдирд╣реАрдВ рд╣реИред рдПрдХ рд╕рд╛рде рдХрдИ рд╕рдВрдкрддреНрддрд┐рдпреЛрдВ рдХреЛ рдирд╖реНрдЯ рдХрд░рддреЗ рд╕рдордп рдпрд╣ рдХрдо рд╕рдВрдХреНрд╖рд┐рдкреНрдд рд╣реЛрддрд╛ рд╣реИред
рдЖрд░рдИрдкреАрдПрд▓: рд▓рд┐рдВрдХ

# App.svelte
------------
<script lang="ts">
  import data from "./store";
  $: count = $data;
</script>

рдмреЗрд╢рдХ рдЖрдк рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛рд╢реАрд▓ рдЕрдкрдбреЗрдЯ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рд╣рдореЗрд╢рд╛ рд╕реАрдзреЗ рдбреАрдУрдПрдо рдореЗрдВ рд╕реНрдЯреЛрд░ рд╡реИрд▓реНрдпреВ рдХрд╛ рд╕рдВрджрд░реНрдн рд▓реЗ рд╕рдХрддреЗ рд╣реИрдВред

рдЗрдирдкреБрдЯ рд╕реЗ

<script lang="ts">
  import data from "./store";
  $: ({ count } = $data);
</script>

<main>
  <h1>Count (inline): {$data.count}</h1>
  <h1>Count (reactive destructure): {count}</h1>
    <button on:click={() => data.update(c => ({count: c.count + 1}))}>
    Increment
  </button>
</main>

svelte2tsx рдЖрдЙрдЯрдкреБрдЯ рдЙрддреНрдкрдиреНрди рдХрд░рддрд╛ рд╣реИ:

<></>;
import data from "./store";
function render() {


  ;() => {$: ({ count } = __sveltets_store_get(data));}
;
() => (<>

<main>
  <h1>Count (inline): {__sveltets_store_get(data).count}</h1>
  <h1>Count (reactive destructure): {count}</h1>
    <button onclick={() => data.update(c => ({count: c.count + 1}))}>
    Increment
  </button>
</main> </>);
return { props: {}, slots: {}, getters: {}, events: {} }}

export default class extends createSvelte2TsxComponent(__sveltets_partial(render)) {
}

рд╕рдорд╕реНрдпрд╛ рдпрд╣ рд╣реИ рдХрд┐ $ -рдЕрд╕рд╛рдЗрдирдореЗрдВрдЯ рдПрдХ рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ рд▓рд┐рдкрдЯрд╛ рд╣реБрдЖ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдорд╛рди рдЗрд╕рдХреЗ рджрд╛рдпрд░реЗ рд╕реЗ рдмрд╛рд╣рд░ рдореМрдЬреВрдж рдирд╣реАрдВ рд╣реИред

рд╣рдореЗрдВ рдпрд╣ рдЬрд╛рдВрдЪрдирд╛ рдкрдбрд╝ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рд╡реНрдпрд╛рдкрдХ рд╕рдВрдХрд▓рдХ рдпрд╣ рдХреИрд╕реЗ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдЙрд╕реЗ рдПрдХ рдЪрд░ рдШреЛрд╖рд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП, рджреЗрдЦреЗрдВ рдХрд┐ рдХреНрдпрд╛ рд╣рдо рдЕрдиреНрдп рд╕реНрдерд┐рддрд┐ рдХреЛ рдпрд╛рдж рдХрд░рддреЗ рд╣реИрдВ

рд╕рдорд╕реНрдпрд╛ ts AST рд╡рд┐рд╢реНрд▓реЗрд╖рдг рд╣реИред рдпрд╣ рдХреЗрд╡рд▓ let x = ... рдкрд░рд┐рд╡рд░реНрддрди рдХрд░рддрд╛ рд╣реИ рдпрджрд┐ рдпрд╣ рдПрдХ рдмрд╛рдЗрдирд░реА рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рдпрд╣ рдПрдХ рдмрд╛рдЗрдирд░реА рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рд╣реИ рдЬреЛ рдПрдХ рдХреЛрд╖реНрдардХ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдХреЗ рдЕрдВрджрд░ рд▓рдкреЗрдЯрд╛ рдЧрдпрд╛ рд╣реИред

рд╕рдВрдкрд╛рджрд┐рдд рдХрд░реЗрдВ: рдореИрдВ рдЗрд╕реЗ рдареАрдХ рдХрд░рдиреЗ рдХреЗ рдмреАрдЪ рдореЗрдВ рд╣реВрдВ - рдпреЗ рд╕рднреА рдЕрдЧрд░-рддрдм-рднреА-рд╕реЛрдЪ-рдХреЗ-рдХреЛрдиреЗ-рдХреЗрд╕-рдЪреЗрдХ рдореЗрд░реЗ рджрд┐рдорд╛рдЧ рдХреЛ рдзреБрдВрдзрд▓рд╛ рдмрдирд╛рддреЗ рд╣реИрдВ

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдмрд╛рдПрдВ рдЪреЗрдХ рдХреЛ рднреА рдмрджрд▓рдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реИ

https://github.com/sveltejs/language-tools/blob/a032ff2ea702340de7c59f84b480bf9e27f0043d/packages/svelte2tsx/src/svelte2tsx.ts#L770

https://github.com/sveltejs/svelte/blob/f739b4772a4ad32c0fd337afb9d5594ebd776073/src/compiler/compile/Component.ts#L607

рд╣рд╛рдВ, рдХрдИ рдЪреАрдЬреЛрдВ рдХреЛ рдмрджрд▓рдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реИред рдореИрдВ рдПрдХ рдорд╕реМрджрд╛ рдкреАрдЖрд░ рдмрдирд╛рдКрдВрдЧрд╛ рддрд╛рдХрд┐ рдЖрдк рдореЗрд░реА рд╡рд░реНрддрдорд╛рди рд╕реНрдерд┐рддрд┐ рджреЗрдЦ рд╕рдХреЗрдВред

рдХреНрдпрд╛ рдпрд╣ рдкреГрд╖реНрда рдЙрдкрдпреЛрдЧреА рдерд╛?
0 / 5 - 0 рд░реЗрдЯрд┐рдВрдЧреНрд╕

рд╕рдВрдмрдВрдзрд┐рдд рдореБрджреНрджреЛрдВ

canadaduane picture canadaduane  ┬╖  5рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

koddr picture koddr  ┬╖  6рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

maximedupre picture maximedupre  ┬╖  5рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

non25 picture non25  ┬╖  5рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

matthewmueller picture matthewmueller  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ