generics - Hva er TypeScript-ekvivalenten til Javas `?` ukjente jokertegn?


Si at jeg vil erklære et array av generiske typer i Typescript. Hva ville være ekvivalenten til den ukjente jokertegn ' ? ' i Java?

Dette kompilerer, men virker litt klønete MyGeneric<any>[];

Jeg vil gjerne ha en deklarasjon tilsvarende Java MyGeneric<?>[];, det vil si et enkelt type-array, men typen er ikke kjent når det deklareres.

Svar #1

Jeg tror ikke Typescript har generiske typer med sen binding.

Men hvis denne spesifikke koden var i konteksten av en funksjon, kunne du bruke generics for å oppnå en lignende ting.

function example<T>(val:T){
  let a : T[]

  return [val]
}

let a = example(4)
// number[] :: [4]

let b = example('hello')
// string[] :: ['hello']

Her er et interaktivt eksempel: lenke

Prøv å holde musepekeren over a eller b for å se det i aksjon.

Svar #2

Si at jeg vil erklære et array av generiske typer i Typescript. Hva ville være ekvivalenten til den ukjente jokertegn ' ? ' i Java?

Å ha et strengarray

var foo:string[]; 

Dette er det samme som følgende når det gjelder TypeScript:

var foo:Array<string>; 

Hvis du vil ha et array av hva som helst, bruk bare any:

var foo:any[] = ['asdf',123]; // Anything is allowed in this array.

Relaterte artikler