使用Typescript,如何键入函数True函数?

使用Typescript,如何键入函数True函数?,typescript,functional-programming,eslint,typescript-eslint,typed-lambda-calculus,Typescript,Functional Programming,Eslint,Typescript Eslint,Typed Lambda Calculus,作为背景,我将介绍“函数群”,并尽力将这些Javascript示例转换为类型化的Typescript。请参阅以供参考。True函数返回第一个curried参数,并忽略第二个参数 考虑以下类型脚本代码: interface ElsFn<T> { (els: unknown): T; } interface True extends Function { <T>(thn: T): ElsFn<T>; } // eslint-disable-next-l

作为背景,我将介绍“函数群”,并尽力将这些Javascript示例转换为类型化的Typescript。请参阅以供参考。True函数返回第一个curried参数,并忽略第二个参数

考虑以下类型脚本代码:

interface ElsFn<T> {
  (els: unknown): T;
}

interface True extends Function {
  <T>(thn: T): ElsFn<T>;
}

// eslint-disable-next-line @typescript-eslint/explicit-function-return-type
const T: True = (thn) => (_els) => thn;

console.log(T('true')('false'));
接口ElsFn{
(els:未知):T;
}
接口真扩展函数{
(thn:T):ElsFn;
}
//eslint禁用下一行@typescript eslint/显式函数返回类型
常数T:True=(thn)=>(els)=>thn;
log(T('true')('false'));
假设我想保留“显式函数返回类型”规则,那么如何去掉ESLint disable注释呢?换句话说,我想正确地键入True函数

我的编辑告诉我问题出在代码的
(\u els)=>thn
部分。它需要以某种方式打字

]

我可以做些什么来设置返回类型或以其他方式正确地键入此内容,以便不需要禁用ESLint规则

(_els): boolean => thn;

它是否适用于您的案例?

您仍然需要指定泛型参数和返回类型:

const T:True=(thn)=>(\u els):T=>thn;

您将
True
类型定义为泛型。然后你应该给你的参数一个类型,使你的函数有一个返回类型:
(thn:AType)=>(\els)=>thn否则它会有任何类型。你能再解释一下吗?我很确定,按照我的方式,泛型类型会流向最终的返回值。问题是eslint规则似乎不理解它。例如,如果我传递一个字符串作为第一个参数,它知道返回值是一个字符串。对不起,我误解了这个问题。我不这么认为,因为在函数True函数中,参数可以是任何类型,而不仅仅是布尔值。我真的很推荐这个叫“一堆函数”的精彩演讲,它让我非常感兴趣。谢谢这让我非常接近!我确定的解决方案是:
const T=(thn:T_)=>(\u els:unknown):T_=>thn