Kev*_*ers 9 typescript typescript-generics svelte svelte-3 sveltekit
我想在 Svelte(Kit) 组件的 props 中使用泛型类型,我发现有这样的type T = $$Generic东西:
<script lang="ts">
import type { Writable } from "svelte/store";
type T = $$Generic;
export let store: Writable<T[]>;
</script>
Run Code Online (Sandbox Code Playgroud)
虽然这很棒,但我确实需要比这更多的信息:我要求 具有T属性id。通常我会做这样的事情:
export type WithId = { id: number };
function foo<T extends WithId>(property: T) { ... }
Run Code Online (Sandbox Code Playgroud)
我怎样才能对 Svelte 组件道具做类似的事情?
H.B*_*.B. 23
编辑:设计已更改,泛型现在应定义为使用常规extends关键字的属性:
<script lang="ts" generics="T extends { id: number }">
Run Code Online (Sandbox Code Playgroud)
您可以像这样指定它扩展的类型:
type T = $$Generic<{ id: number }>;
Run Code Online (Sandbox Code Playgroud)
您还可以使用type或interface名称,但如果您在组件中定义它们,则可能必须将它们放置在模块脚本中,即如下所示:
<script lang="ts" context="module">
interface WithId { id: number }
</script>
<script lang="ts">
export let store: Writable<T[]>;
type T = $$Generic<WithId>;
</script>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
9168 次 |
| 最近记录: |