Open falsandtru opened 4 years ago
Duplicate of #241
I'm really not sure why you could think so. The compiler just chooses a type. Doesn't measure the variance.
The return type of () => [0]
is widened to number[]
, despite contextual type information about the expected parameter of f()
and g()
.
Then can you explain why the following code won't be an error?
declare function f(a: C1): void;
f(() => [0]);
Magic? (No, I’m not sure.)
Not sure which direction we should go on this one.
@jcalz Your stupid comments are really useless and annoying. Don't touch my issues. I'm not posting issues to talk to you.
The first error is especially odd.
TypeScript Version: 3.7.x-dev.20200104
Search Terms:
Code
Expected behavior: pass Actual behavior: Type 'number' is not assignable to type '0'.(2322) Property '0' is missing in type 'number[]' but required in type '[number]'.(2741) Playground Link: http://www.typescriptlang.org/play/index.html?ts=3.8.0-dev.20200104&ssl=1&ssc=1&pln=8&pc=14#code/C4TwDgpgBAwgjFAvFAFAQwFxTgSiQPigG0AGAXQG4AoUSWAJiVUynr0UKIDsBXAWwBGEAE6Ua4aDADMTdFintCPLgBMIAMwCWXCCupU1AYwA2aYdHXLDwTQHsuUdXNgIAPrAVYAbrc16qTiiKxOQ41Eam5o5WNvZQAObOMIzu0jjevv6JQQQhZGFAA
Related Issues: