我想定义一个允许除函数以外的任何类型的类型,我该如何实现?
我尝试过这样的交叉路口:
type anyButFunction = any | Function;
但是当我尝试
const foo: anyButFunction = () => null;
它确实可以编译。我如何创建这样的类型?那有可能吗?
答案 0 :(得分:3)
当前这是不可能的,当取反类型可用时,这将变为可能。这里的PR描述了这个确切的用例:
这可以用作限制无界类型的潜在类型的方法吗?例如,
number & not 0
允许除数字0之外的任何数字。是的。那是'em的主要驱动力。
如果您希望将参数限制为函数,那么我们目前可以使用泛型和条件类型来执行此操作,这将主要用作取反类型:
function noFunctions<T>(p: Exclude<T, Function>) {
}
noFunctions(1) //ok
noFunctions(() => {}) ///error