【问题标题】:Type from an exclusion (?) of values从值的排除 (?) 中键入
【发布时间】:2020-03-16 15:46:45
【问题描述】:

我知道我可以将类型定义为值的联合:

type Names = 'Alex' | 'Jason' | 'Tony';

但我乐观地认为我可能能够将类型定义为所有值:

type NotAlex = string | !'Alex'

这可能是一厢情愿,最终我想做的是能够说这样的话:

interface IThingWithTime {
    time: number;
    [key: string]: [number, number];
}

没有编译器告诉我:

“数字”类型的属性“时间”不能分配给字符串索引 输入'[数字,数字]'

【问题讨论】:

    标签: typescript


    【解决方案1】:

    目前这是不可能的。有人提议将negated typescustom index signatures 包含在内,但它们没有进入语言(以及目前的否定类型seem dead

    您可以使用交集类型绕过您引用的错误:

    type IThingWithTime = {
        time: number;
    } & {
        [key: string]: [number, number];
    }
    
    

    虽然你可能会因为类型不一致而遇到不一致。

    【讨论】:

    • 非常感谢!听到否定类型已经死了很有趣......我还不能观看你链接的视频,但鉴于对拉取请求的反馈量,很遗憾这还没有进行
    • @OliverRadini 该链接来自 TS conf 的问答。我特别询问了否定类型,因为我也很期待它们。 Ryan 和 Anders 解释了为什么他们现在至少要阻止他们,你应该听一听(我链接到了确切的时间,所以只听了 5 分钟,尽管其余的也很有趣 :))
    • 我一定会去看看;听起来是个有趣的话题,我会留意看看是否有更多消息
    • 我看了你引用的片段;他们提出了非常有趣的观点,而且似乎否定类型将远离语言......也许是最好的!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-10-19
    • 1970-01-01
    • 2016-02-22
    • 2018-10-11
    • 2017-12-12
    • 2019-08-01
    • 2021-11-06
    相关资源
    最近更新 更多