generics - Care este echivalentul TypeScript al wildcard-ului necunoscut `?` din Java?


Să spun că vreau să declar un tablou de generice în Typescript. Care ar fi echivalentul wildcard-ului necunoscut '?' în Java?

Acesta se compilează, dar pare puțin ciudat MyGeneric<any>[];

Aș dori o declarație echivalentă în Java cu MyGeneric<?>[];, adică un tablou de un singur tip, dar tipul nu este cunoscut când este declarat.

Răspuns #1

Nu cred că Typescript are tipuri generice cu legare târzie.

Dar dacă acest cod specific ar fi fost în contextul unei funcții, ai putea folosi generice pentru a realiza un lucru similar.

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

  return [val]
}

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

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

Iată un exemplu interactiv: link

Încearcă să treci cursorul peste a sau b pentru a vedea cum funcționează.

Răspunsul #2

Să spun că vreau să declar un tablou de generice în Typescript. Care ar fi echivalentul wildcard-ului necunoscut '?' în Java?

A avea un tablou de șiruri

var foo:string[]; 

Acesta este la fel ca următorul în ceea ce privește TypeScript:

var foo:Array<string>; 

Dacă vrei un array de orice, atunci folosește pur și simplu any:

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