Skip to content

How to write a Dynamic Actions Array in TypeScript? #448

Description

@awhitford

I am using plopjs and was having a great time until I decided to migrate to TypeScript (because I like types).
What is the advice for using a Dynamic Actions Array like this in TypeScript?

actions: (answers) => {
}

Inside the closure, I want to be able to reference the prompts like: answers.projectName.
If I create an interface for the prompt parameters, like:

interface PromptProps {
  projectName: string
}

Then, I can add type information like this:

actions: (answers: PromptProps) => {
}

While this solves the answers.projectName problem, Typescript still complains about the actions declaration:

Type '(answers: PromptProps) => (string | ((answers: PromptProps) => string) | { type: string; path: string; pattern: RegExp; template: string; })[]' is not assignable to type 'Actions | undefined'.
  Type '(answers: PromptProps) => (string | ((answers: PromptProps) => string) | { type: string; path: string; pattern: RegExp; template: string; })[]' is not assignable to type 'DynamicActionsFunction'.
    Types of parameters 'answers' and 'data' are incompatible.
      Type 'Answers | undefined' is not assignable to type 'PromptProps'.
        Type 'undefined' is not assignable to type 'PromptProps'.ts(2322)

What is the solution?

CC: @crutchcorn @cspotcode

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions