Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Typescript equivalent of ? unknown wildcard

Say I want to declare an array of generics in Typescript. What would be the equivalent of the unknown wildcard '?' in Java?

This does compile, but seems a little awkward MyGeneric<any>[];

I would like a declaration equivalent to Java MyGeneric<?>[];, that is, a single type array, but the type is not known when it is declared.

Cheers.

like image 482
kaldo Avatar asked Oct 20 '15 14:10

kaldo


2 Answers

Say I want to declare an array of generics in Typescript. What would be the equivalent of the unknown wildcard '?' in Java?

To have a string array

var foo:string[]; 

This is same as the following as far as TypeScript is concerned:

var foo:Array<string>; 

If you want an array of anything then just use any:

var foo:any[] = ['asdf',123]; // Anything is allowed in this array.
like image 82
basarat Avatar answered Sep 19 '22 10:09

basarat


I don't think Typescript has late binding generic types.

But if this particular code was in the context of a function you could use generics to achieve a similar thing.

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

  return [val]
}

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

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

Here is an interactive example: link

Try hovering over a or b to see it in action.

like image 38
James Forbes Avatar answered Sep 17 '22 10:09

James Forbes