serverless / typescript

TypeScript definitions for Serverless Framework service configuration
140 stars 24 forks source link

How to get type for a single Lambda config? #77

Open ezmiller opened 1 year ago

ezmiller commented 1 year ago

Let’s say I have code like this in serverless.ts:

import { AWS } from '@serverless/typescript'
import app from '@functions/app` // this is a js/typescript lambda config blob
const sererlessConfig: AWS = {
  ...
  functions: { app },
  ...
}

Now let’s say I want to do some processing on that app import, for example to inject some environment variables. So I create a function injectEnv that takes a lambda config blob and adds the necessary environment property. The function looks like: const injectEnv = (lambdaConfig) => {…}.

Typescript will want me to type the lambdaConfig argument, since it won't like it to have an implicit any. But how can I do that? @serverless/typescript does not seem to have a type corresponding to the lambda config block.

I can get the whole functions block of the total configuration by doing AWS['functions'], but is there a way to get just the type of the lambda config block?

lurdharry commented 1 year ago

Import Type import type { AWS } from "@serverless/typescript";

Use type here: const config: AWS["functions"][number] = { handler: '${handlerPath(__dirname)}/handler.main', events: [ ], };

ezmiller commented 1 year ago

@lurdharry thank you for the response. I'm not sure I understand what number refers to in your example line:

const config: AWS["functions"][number] = { handler: '${handlerPath(__dirname)}/handler.main', events: [ ], };