私はTypeScriptバージョン2.3.2を使用しています。 noImplicitAnyオプションでわかりやすいエラーが発生しました。私はそのエラーが何か矛盾していると感じます。ここで 不整合に暗黙的に「any」型エラーがあります
はコードです:// 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
しかし、私は行動についての理由を見つけることができませんでした。私は仕様を正しく理解しているかどうかはわかりません。
アイデア?