TypeScript 2.4 changed the way the type system behaves internally to improve the error detection in nested callbacks and promises:
TypeScript's checking of callback parameters is now covariant concerning immediate signature checks. Previously it was bivariant, which could sometimes let incorrect types through. Basically, this means that callback parameters and classes that contain callbacks are checked more carefully, so TypeScript will require stricter types in this release. This is particularly true of Promises and Observables due to the way in which their APIs are specified.
In TypeScript versions before 2.4, the following example was considered valid, and no errors were thrown:
declare function ...