我有一个svelte组件(SvelteKit项目)--让我们称之为MyComponent
。它接受 * 两个 * prop 。
使用TypeScript的正确方法是什么?
选项一:对$$props
进行类型转换
<script lang="ts">
interface ComponentPropType {
a: string;
b: number;
}
export let { a, b } = $$props as ComponentPropType;
</script>
<h1>a = {a} </h1>
<p>My value is {b} </p>
或者我应该用一点冗长
选项二:解结构化export let
指定的props
<script lang="ts">
interface ComponentPropType {
a: string;
b: number;
}
export let props: ComponentPropType;
export let { a, b } = props;
</script>
<h1>a = {a} </h1>
<p>My value is {b} </p>
如果我们使用选项1-我们可以将组件渲染为<MyComponent {{a, b}} />
或<MyComponent {a} {b} />
这是否会阻止事件转发(如果有)?
另一方面,如果我们使用选项2-我们需要将组件渲染为<MyComponent props={{a, b}} />
。在这种情况下,我们不能使用prop-spread。
哪一个是正确的做法呢?有更好的解决方案吗?
1条答案
按热度按时间kxe2p93d1#
我不认为这是必要的,但我不是100%确定你想达到什么目的。
只需要用
export let
定义props就足够了这将足以让您使用直接赋值
<Component a={"a"} b={2} />
或传播
<Component {...{a:"a", b:2}} />
请注意,需要使用扩展运算符,因为
{{a,b}}
与{...{a,b}}
不同