【问题标题】:Reducing TypeScript Type possibility with recursive typing使用递归类型减少 TypeScript 类型的可能性
【发布时间】:2019-02-18 08:45:25
【问题描述】:

由于 TypeScript 允许高级类型定义,我想尝试很多这种方法,但并不像我想象的那么容易。

例如,我想有一种“向导一步一步”的方法:

function fillWizardOptions<T>() {
     return <P extends T> (value:  P) => {
         return fillWizardOptions<Exclude<T, P>>();
     }
}

所以每次我调用一个链式子函数时,我都想失去之前的选项,但是目前,Exclude 并没有像我预期的那样工作:

fillWizardOptions<string|number|boolean>()
     ('foo')
     ('bar');// Expect here of have only number|boolean, but I still have string|number|boolean

可能我错过了什么。

另外,如果有人知道我在哪里可以找到 playground 之类的 RegEx101

谢谢。

更新:忘记提及我使用的是 TypeScript 3.3.1

【问题讨论】:

    标签: typescript typescript-typings


    【解决方案1】:

    在这种情况下,对于第一次调用,&lt;P&gt; 不是实现 string 类型,而是具有 'foo' 类型。所以这就是为什么它没有从T 中排除string。因此,如果您写('foo' as string)(&lt;string&gt;'foo'),它应该可以工作

    【讨论】:

    • 哇!就是这样!......处理字面值和原始值并不容易......通过使用enum,它肯定更优雅,不再需要处理强制转换。谢谢!
    猜你喜欢
    • 2018-05-30
    • 1970-01-01
    • 1970-01-01
    • 2020-01-27
    • 1970-01-01
    • 1970-01-01
    • 2020-02-10
    • 1970-01-01
    • 2017-06-12
    相关资源
    最近更新 更多