2017-10-12 97 views
1

我想将一个lambda传递给一个函数,但需要一个具有一个参数的lambda。根据需要,TypeScript会抛出一个错误,如果我将两个参数传入lambda,但不会抱怨,如果我省略了lambda中的任何参数。我怎样才能让TypeScript需要传递一个参数lambda?我可以做一个lambda参数吗?

function foo(fn: (x) => any) { } 

foo(() => "bla");  // Bad, but no error 
foo((x) => "bla"); // Good, no error 
foo((x, y) => "bla"); // Bad, with error 
+0

'()=>“bla”'可分配给'(x)=> any'。实际上,即使存在限制,它仍然不能强制使用该参数进行反对的函数。 – zerkms

回答

3

你不能,语义,x => "bla"() => "bla"完全一致。他们都完全忽略了第一个参数(以及所有其他参数)

通过询问(x) => any lambda,您基本上会说:“我想要一些可以用一个参数调用的东西”,() => "bla"符合法案,(x, y) => "bla"不。

相关问题