在 svelte 组件中
<script lang="ts">
export let multiple: boolean = false;
export let value: string|string[];
// ...
</script>
<!-- ... -->
value
属性的类型应该是 string
如果 multiple == false
和 string[]
否则.如何实现?
编辑: 这个想法是得到一个 Discriminated Union对组件的影响。
最佳答案
您需要将“值”的类型设为条件类型。为此,您应该声明一个函数,该函数将为您确定并返回类型。这可以像这样完成:
declare function f<T extends boolean>(x: T): T extends false ? string : string[];
然后你可以定义你的 props,'value' 的类型将设置为字符串,除非组件声明将 'multiple' 设置为 true,其中 'value' 的类型将变为 string[]。
export let multiple: boolean = false;
export let value = f(multiple);
关于typescript - 根据另一个属性值键入 Svelte 组件属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66526968/