代码之家  ›  专栏  ›  技术社区  ›  Cerberus

typescript:定义不能容纳任何内容的类型

  •  0
  • Cerberus  · 技术社区  · 6 年前

    我对这种类型感兴趣(为了验证的目的),即这种类型的变量不能有任何赋值给它们。有类型 void ,但此类型的值可以包含 undefined 所以这不是我想问的。

    我似乎能够通过不兼容类型的交集重现这种行为:

    type nothing = true & false;
    const nothingTrue: nothing = true; // error, true not assignable to false
    const nothingFalse: nothing = false; // error, false not assignable to true
    const nothingUndefined: nothing = undefined; // error, undefined not assignable to true
    

    但这看起来更像一个黑客。也许还有更清楚的东西?或者这条路对吗?

    1 回复  |  直到 6 年前
        1
  •  2
  •   Titian Cernicova-Dragomir    6 年前

    你要找的类型是 never 类型。从 docs :

    Never类型是每种类型的子类型,并且可以分配给每种类型;但是,没有任何类型是Never的子类型或可以分配给Never的子类型(Never本身除外)。即使任何一个都不可能分配给永远。