Open
Description
Bug Report
π Search Terms
overload, generic, function
π Version & Regression Information
- This is the behavior in every version I tried, and I reviewed the FAQ for entries about overloads and generics.
β― Playground Link
Playground link with relevant code
π» Code
// only overloaded
function a(value: string): void;
function a(value: number): void;
function a(value: string | number) { value.toString() };
// only generic
function b<T extends number>(value: T): void { value.toString() };
// overloaded with generic
function c(value: string): void;
function c<T extends number>(value: T): void;
function c(value: string | number) { value.toString() };
// these are errors as expected
() => {
let d: (value: unknown) => void = a;
let e: (value: unknown) => void = b;
c(null);
}
// this should be an error
let f: (value: unknown) => void = c;
f(null);
π Actual behavior
In the example above I call f(null)
and cause a runtime error, however typescript doesn't warn me about it.
π Expected behavior
c
should not be assignable to (value: unknown) => void
.