Svelte TypeScript:向事件处理程序添加类型时出现意外的 tokensvelte(解析错误)
Svelte TypeScript: Unexpected tokensvelte(parse-error) when adding type to an event handler
我正在尝试将 TypeScript 实现到 Svelte 中,但遇到了这样的问题:当我尝试在下面的行中向事件添加类型时:
on:click={(e: Event) => onClick(e, data)}
它大喊:
Error: ParseError: Unexpected token
如果我删除输入,它会说:
Parameter 'e' implicitly has an 'any' type.
我怎样才能在 Svelte 中不出错地为这类东西添加类型?
编辑:
更复杂的例子:
{#each elementsArray as element}
<CustomComponent
on:itemClick={(e: Event) => doSomething(e, element)}>
</CustomComponent>
{/each}
根据 official docs,模板中没有对 TypeScript 的官方支持。
At the moment, you cannot [use Typescript inside the template/mustache tags]. Only script/style tags are preprocessed/transpiled.
您需要将类型转换移动到 <script>
标签。
<script lang="ts">
function onClick(e: MouseEvent) { ... }
</script>
<button on:click={onClick}></button>
如果您的事件是来自 child 使用 createEventDispatcher
的自定义事件,您的 e
事件将被键入为 CustomEvent<any>
,您可以对其进行类型转换在 <script>
中随心所欲。
<script lang="ts">
let elems = [1,2,3];
function onClick(e: CustomEvent<{foo: string}>, el: number) {
console.log(e.detail.name);
}
<script>
{#each elems as el}
<CustomComponent on:itemClick={e => onClick(e, el)}></CustomComponent>
{/each}
如果您仍然遇到隐式任何错误,请尝试在 tsconfig.json
.
中关闭 noImplicitAny
我正在尝试将 TypeScript 实现到 Svelte 中,但遇到了这样的问题:当我尝试在下面的行中向事件添加类型时:
on:click={(e: Event) => onClick(e, data)}
它大喊:
Error: ParseError: Unexpected token
如果我删除输入,它会说:
Parameter 'e' implicitly has an 'any' type.
我怎样才能在 Svelte 中不出错地为这类东西添加类型?
编辑: 更复杂的例子:
{#each elementsArray as element}
<CustomComponent
on:itemClick={(e: Event) => doSomething(e, element)}>
</CustomComponent>
{/each}
根据 official docs,模板中没有对 TypeScript 的官方支持。
At the moment, you cannot [use Typescript inside the template/mustache tags]. Only script/style tags are preprocessed/transpiled.
您需要将类型转换移动到 <script>
标签。
<script lang="ts">
function onClick(e: MouseEvent) { ... }
</script>
<button on:click={onClick}></button>
如果您的事件是来自 child 使用 createEventDispatcher
的自定义事件,您的 e
事件将被键入为 CustomEvent<any>
,您可以对其进行类型转换在 <script>
中随心所欲。
<script lang="ts">
let elems = [1,2,3];
function onClick(e: CustomEvent<{foo: string}>, el: number) {
console.log(e.detail.name);
}
<script>
{#each elems as el}
<CustomComponent on:itemClick={e => onClick(e, el)}></CustomComponent>
{/each}
如果您仍然遇到隐式任何错误,请尝试在 tsconfig.json
.
noImplicitAny