Repository navigation
Generate alias/intermediary type for function definition #60
Description
Activity
This is such a painful thing indeed to have
Solution here: https://stackoverflow.com/questions/71278233/how-to-pick-or-access-indexer-index-signature-property-in-a-existing-type-in-typReacted by David Ulrich, Enric Bisbe Gil, Francisco Cabral, Jamie Weston and moosthuizen42@colthreepv thanks for the link, you saved me. What I was missing was the NonNullable<> part, the error message from tsc for
AWS['functions'][string]was not very helpful.Reacted by David Ulrich and moosthuizen42I think I am in the same boat with the
serverless-api-gateway-cachingplugin and Typescript. The plugin adds acachingobjects to thehttpevent type. Example:functions: { myFunction: { handler: .., environment: .., events: [ { http: { method: 'get', path: .., caching: { enabled: true } } as any, }, ], }, },The
as anyis my poor man's solution to get around TS2322. Is there a better way for me than usinganyhere?This is such a painful thing indeed to have Solution here: https://stackoverflow.com/questions/71278233/how-to-pick-or-access-indexer-index-signature-property-in-a-existing-type-in-typ
You saved my life... I've spent 2 hours on this... t would be great to export this automatically from '@serverless/typescript'
export type ServerlessFunction = NonNullable<AWS['functions']>[string]
That convo was really helpful to extend for a different plugin.
I think this deserves a mention in the readme.
This is such a painful thing indeed to have Solution here: https://stackoverflow.com/questions/71278233/how-to-pick-or-access-indexer-index-signature-property-in-a-existing-type-in-typ
You saved my life... I've spent 2 hours on this... t would be great to export this automatically from '@serverless/typescript'
export type ServerlessFunction = NonNullable<AWS['functions']>[string]
if someone else needs this:
import { AWS } from '@serverless/typescript'; export type Functions = AWS['functions']; export type Function = NonNullable<Functions>[string]; export type Events = Function['events']; export type Event = NonNullable<Events>[number]; export type HttpEvent = Exclude<Extract<Event, { http: unknown }>['http'], string>;
Reacted by Jamie Weston

@fredericbarthelet
Is it possible to generate an intermediary type/alias for the indexer type of AWS functions? Some plugins expect additional configuration properties in the function definition, and this gives compile errors when using a serverless.ts file.
A good example is https://github.com/go-dima/serverless-plugin-conditional-functions.
My serverless.ts file:
The type definition for functions uses a string indexer, and the type of that indexer is inlined.
I want to do something like this:
I couldn't figure out a way to get the type starting from the AWS type def, so I'm hoping that if the
@serverless/typescriptpackage would provide an alias, then I could use the alias to extend it with additional props as outlined above.