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.
