You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Svelte组件$props类型疑问:不移出接口的Props类型标注方案

解决方案

你可以用Svelte内置的ComponentProps工具类型直接提取组件的Props类型,不用把组件内部的Props接口移到外部文件。具体写法如下:

修改挂载代码

import { mount, $state } from 'svelte';
import { ComponentProps } from 'svelte';
import Comp from './Comp.svelte';

// 通过ComponentProps提取Comp的props类型,绑定给$state变量
const props = $state<ComponentProps<typeof Comp>>({});

const comp = mount(Comp, {
  target: document.getElementById('target')!,
  props: props,
});

props.value = 100; // 此时不会再出现类型错误

原理说明

  • ComponentProps是Svelte官方提供的类型工具,专门用于从组件类型中提取其props的完整类型定义。
  • typeof Comp用于获取组件的构造函数类型,ComponentProps<typeof Comp>会自动解析出你在Comp.svelte内部定义的Props接口类型,包括属性的可选性(比如这里的value?: number)。
  • 这种方式不需要改动原组件的代码,内部的Props接口可以继续保留在组件文件中。

内容的提问来源于stack exchange,提问作者Corrl

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.14 22:52:08