我正在使用TypeScript版本2.3.2。 我遇到了noImplicitAny选项的转储错误。我觉得这个错误是不一致的。不一致隐含有'任何'类型的错误
下面是代码:
// Transpile with noImplicitAny
export type Callback1 = (a1: string) => void;
export type Callback2 = (a1: string, a2: string) => void;
export class Foo {
setCb(cb: Callback1 | Callback2): void {
}
}
let foo = new Foo();
foo.setCb((a1) => {}); // error Parameter 'a1' implicitly has an 'any' type. (parameter) a1: any
foo.setCb((a1: string) => {}); // no error
foo.setCb((a1, a2) => {}); // no error
foo.setCb((a1: string, a2: string) => {}); // no error
我认为,如果
foo.setCb((a1, a2) => {}); // no error
是accpeted,
foo.setCb((a1) => {}); // error Parameter 'a1' implicitly has an 'any' type. (parameter) a1: any
应同样接受,或两者应该是错误。 那就是不一致我是说。
我试着阅读规范。
https://github.com/Microsoft/TypeScript/blob/master/doc/spec.md#34-union-types https://github.com/Microsoft/TypeScript/blob/master/doc/spec.md#3117-type-inference
但是,我找不到任何有关该问题的原因。我不确定我是否正确理解该规范。
任何想法?