Reputation: 4520
Hell guys,
Here's another typescript 2.0 question (with strict null check mode enabled). So, if you define a function which has default values for all parameters:
(name = "Luis", age = 40)=>void
Then all parameters are considered optional, ie, it's as if we have the following signature:
(name?: string, age?: number) => void
Right? Now, what happens when we have this signature:
(name = "Luis", age: number ) => void
According to VS code, that signature is compatible with:
(name: string, age: string) => void
Now, if I activate the strict null check mode, shouldn't the following call produce an error:
doIt(undefined, 30);
It compiles ok, but if I'm not wrong, undefined will only get added automatically to the list of types of optional parameters. I haven't found any references to default initialized parameters.
So, if the previous call is ok, can someone point me to where I can find info about it in the official docs ?
Thanks,
Luis
Upvotes: 0
Views: 134
Reputation: 275927
Quick note: You cannot specify defaults in just signatures e.g. the following is an error:
declare var foo: (name = "Luis", age = 40) => void; // ERROR: defaults only allowed in implementation
Continuing the following code:
var foo = (name = "Luis", age: number) => null;
foo(undefined, 123);
foo(null, 123); // ERROR
Shows that the name
is compatible with string
or undefined
. The tooltip is wrong but the general analysis is correct.
Feel free to raise an issue at https://github.com/Microsoft/TypeScript/issues
Upvotes: 1