Skip to content

Commit c09159d

Browse files
authored
Modify return type depending on storeOptionsAsProperties parameter (#1424)
1 parent 75c2a63 commit c09159d

File tree

2 files changed

+15
-1
lines changed

2 files changed

+15
-1
lines changed

typings/commander-tests.ts

+8
Original file line numberDiff line numberDiff line change
@@ -132,8 +132,16 @@ const createOption2: commander.Option = program.createOption('a, --alpha', 'desc
132132
const addOptionThis: commander.Command = program.addOption(new commander.Option('-s,--simple'));
133133

134134
// storeOptionsAsProperties
135+
// chaining
135136
const storeOptionsAsPropertiesThis1: commander.Command = program.storeOptionsAsProperties();
136137
const storeOptionsAsPropertiesThis2: commander.Command = program.storeOptionsAsProperties(false);
138+
// return type depends on parameter
139+
const storeOptionsAsPropertiesThis3 = program.storeOptionsAsProperties();
140+
const storeOptionsAsPropertiesValue3 = storeOptionsAsPropertiesThis3.someOption;
141+
const storeOptionsAsPropertiesThis4 = program.storeOptionsAsProperties(true);
142+
const storeOptionsAsPropertiesValue4 = storeOptionsAsPropertiesThis4.someOption;
143+
const storeOptionsAsPropertiesThis5 = program.storeOptionsAsProperties(false);
144+
// const storeOptionsAsPropertiesValue5 = storeOptionsAsPropertiesThis5.someOption; // error
137145

138146
// combineFlagAndOptionalValue
139147
const combineFlagAndOptionalValueThis1: commander.Command = program.combineFlagAndOptionalValue();

typings/index.d.ts

+7-1
Original file line numberDiff line numberDiff line change
@@ -148,6 +148,10 @@ declare namespace commander {
148148

149149
type AddHelpTextPosition = 'beforeAll' | 'before' | 'after' | 'afterAll';
150150

151+
interface OptionValues {
152+
[key: string]: any;
153+
}
154+
151155
interface Command {
152156
args: string[];
153157

@@ -372,6 +376,8 @@ declare namespace commander {
372376
*
373377
* @returns `this` command for chaining
374378
*/
379+
storeOptionsAsProperties(): this & OptionValues;
380+
storeOptionsAsProperties(storeAsProperties: true): this & OptionValues;
375381
storeOptionsAsProperties(storeAsProperties?: boolean): this;
376382

377383
/**
@@ -450,7 +456,7 @@ declare namespace commander {
450456
/**
451457
* Return an object containing options as key-value pairs
452458
*/
453-
opts(): { [key: string]: any };
459+
opts(): OptionValues;
454460

455461
/**
456462
* Set the description.

0 commit comments

Comments
 (0)