打字稿:将类型定义为函数以外的任何类型

时间:2019-02-20 23:58:27

标签: typescript

我想定义一个允许除函数以外的任何类型的类型,我该如何实现?

我尝试过这样的交叉路口:

type anyButFunction = any | Function;

但是当我尝试

const foo: anyButFunction = () => null;

它确实可以编译。我如何创建这样的类型?那有可能吗?

1 个答案:

答案 0 :(得分:3)

当前这是不可能的,当取反类型可用时,这将变为可能。这里的PR描述了这个确切的用例:

  
    

这可以用作限制无界类型的潜在类型的方法吗?例如,number & not 0允许除数字0之外的任何数字。

  
     

是的。那是'em的主要驱动力。

如果您希望将参数限制为函数,那么我们目前可以使用泛型和条件类型来执行此操作,这将主要用作取反类型:

function noFunctions<T>(p: Exclude<T, Function>) {

}

noFunctions(1) //ok
noFunctions(() => {}) ///error