打字稿:必需的回调参数?

时间:2017-08-28 17:42:11

标签: typescript

我想定义一个将回调作为参数的函数,并且应该需要该回调的参数。 Typescript正确地报告了一个参数类型不匹配的回调,但没有说明没有预期参数的回调。

为什么第二个on调用没有错误,有没有办法让它出错?

function on(callback: (num: number) => void) {
    callback(5);
}

on((string:bob) => { // typescript error
    console.log("What");
});

on(() => { // no typescript error?
    console.log("What");
});

2 个答案:

答案 0 :(得分:3)

没有办法做到这一点。

参数少于调用者提供的回调在JavaScript中非常非常 - forEachmapfilter等函数都提供3个或更多参数,但经常被赋予1参数函数作为回调。

答案 1 :(得分:-1)

您可以为处理程序定义类型。现在你只能传递一个带有字符串参数的回调。

// define a handler so you can use it for callbacks
type Handler = (t: string) => void;

function doSomething(t: string): void {
    console.log("hello " + t)
}

function thisFirst(callback: Handler) {
  callback('world') // ok
  callback(4) // not assignable to type 'string'
}

thisFirst(doSomething)