打字稿根据值设置类型

时间:2019-11-29 09:42:14

标签: typescript

我有一个函数,它接受一个可选的variant和一个value。如果变量为multi,则用户需要使用元组,否则为数字。有什么办法可以动态键入此内容吗?从概念上讲,它应该像这样:

interface SomeInterface{
  variant?: 'single' | 'multi'
  // pseudocode
  value: variant === 'multi' ? [number,number] : number
}

1 个答案:

答案 0 :(得分:4)

您可以使用discriminated union type

type SomeInterface = {
    variant?: 'single'
    value: number
} | {
    variant: 'multi',
    value: [number,number]
} 

Playground Link