Skapa funktionstyp (TypeScript-gränssnitt)


Jag behöver skapa en funktionstyp som talar om för mig vilken typ det måste vara för det andra värdet baserat på det första värdet

  type BType = number | string | array
  enum AEnum = { number = "number" , string : "string" , array : "array"} 

  const fc = (a : AEnum , b : BType)=>{ 
   //...
  }
 

Det jag behöver är att när a=AEnum.array, då måste b vara array, annars ska ett fel visas

Hur kan jag göra något som detta ??

Svar #1

Bara överlasta funktionen!

type BType = number | string | []
enum AEnum { number = "number", string = "string", array = "array" }

function foo(a: AEnum.number, b: number): unknown;
function foo(a: AEnum.string, b: string): unknown;
function foo(a: AEnum.array, b: []): unknown;
function foo(a: AEnum, b: BType): unknown {
    return void;
}

Lekplats