Búsqueda de sitios web

¿Cómo escribir una interfaz que represente un tipo de tupla en TypeScript?


Me alegra ver el lanzamiento de TypeScript 1.3, pero ¿cómo escribir una interfaz que represente un tipo tupla?

Por ejemplo

var data: [string, number, number];

Cómo escribir una interfaz IData para que pueda hacer lo mismo escribiendo

var data: IData;

Respuesta #1

Sé que esta es una pregunta antigua, pero creo que puedes lograr lo que quieres con lo siguiente:

type IData = [string, number, number];

entonces

var data: IData;

Puedes ver esto en este ejemplo de TypeScript Playground

Respuesta #2

Tenga en cuenta que con algunas de las nuevas características que se están implementando, como los tipos unión, puede obtener aproximadamente lo que desea. El último borrador de la especificación contiene un ejemplo en esta línea (ver https://github.com/Microsoft/TypeScript/blob/master/doc/spec.md#3.3.3)

El siguiente código muestra un ejemplo de cómo podría verse esto:

interface KeyValuePair extends Array<string | number> { 0: string; 1: number; }

var x: KeyValuePair = ["test", 42]; // OK
var y: KeyValuePair = [42, "test"]; // Error

Si tomas el código más reciente de la rama master y compilas lo anterior, verás dónde detecta la asignación a 'x' como válida, y la asignación a 'y' como un error:

S:\src\TypeScript\bin>node tsc c:\temp\tuple.ts
c:/temp/tuple.ts(4,5): error TS2323: Type '[number, string]' is not assignable to type 'KeyValuePair'.
  Types of property '0' are incompatible.
    Type 'number' is not assignable to type 'string'.

Artículos relacionados