TypeScript版本3.5.1
对于需要发送参数的函数,我有一个简单的类型。但是,当我声明该类型的函数时,如果未指定任何参数,TypeScript编译器不会发出任何抱怨。这是一个简单的例子。
interface IArgs {
foo: number;
}
type MyFunc = (args: IArgs) => Promise<any>;
// why doesnt this complain?
// there is no first argument specified.
const fn: MyFunc = async() => { };
/*
uncommenting the following line will make the ts compiler
complain like it should, but it should've complained in
the above declaration as well?
*/
// fn();
如何让TypeScript编译器抱怨函数声明中缺少参数?
答案 0 :(得分:1)
好问题!
我认为这是在这里刻意设计的打字稿。
选择在函数中不使用参数是有效的,但是在调用函数时省略参数是无效的。
使用点击处理程序,例如:
type ClickHandler = (evt: MouseEvent) => any
// Valid uses:
element.onClick = () => doSomething()
element.onClick = (evt) => doSomething(evt.target.value)
但是,由于某些ClickHandler函数可能使用该参数,而有些则可能不使用该参数,因此始终必须提供该参数。
const fn: ClickHandler = () => {}
fn() // typescript error