pkgjs / parseargs

Polyfill of `util.parseArgs()`
Apache License 2.0
121 stars 9 forks source link

Documentation tips for TypeScript #141

Open shadowspawn opened 2 years ago

shadowspawn commented 2 years ago

To get the most out of the typings, the input conjuration needs to be static or const in Typescript. We should add a tip in the documentation here and in utils to reduce potential confusion.

// accurate
const results1 = parseArgs({ options: { foo: { type: 'string' }}});

// accurate
const config2 = { options: { foo: { type: 'string' }}} as const;
const results2 = parseArgs(config2);

// error because `type` is typed as string and not `'type'` so TypeScript can not check used correctly
const config3 = { options: { foo: { type: 'string' }}};
const results3 = parseArgs(config3); // error

Related comment:

shadowspawn commented 1 year ago

If I understand correctly, the types for @pkgjs/parseargs will be available as @types/pkgjs__parseargs. I didn't know about this pattern for types for scoped packages, and I think worth putting in a tip about that in the README too.