Luis Abreu
Luis Abreu

Reputation: 4520

typescript 2.0: parameters with default values

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

Answers (1)

basarat
basarat

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

Related Questions