我正在使用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
但是,我找不到任何有關該問題的原因。我不確定我是否正確理解該規範。
任何想法?