Array<Type> VS Type[] en Typescript
Hasta donde sé, el tipo de una propiedad puede definirse de dos maneras cuando es un arreglo:
property_name: type
donde el tipo puede ser cualquiera
Array<string>
Array<MyType>
// etc. (e.g. let prop1: Array<string>)
y
string[]
MyType[]
// etc. (e.g. let prop1: string[])
¿Cuál es la diferencia entre los dos casos? ¿O estoy entendiendo algo mal (quizás algo sobre <> usado en el casting)?
Respuesta #1
No hay ninguna diferencia semántica
No hay ninguna diferencia en absoluto. Type[] es la sintaxis abreviada para un arreglo de Type. Array<Type> es la sintaxis genérica. Son completamente equivalentes.
El manual proporciona un ejemplo aquí. Es equivalente a escribir:
function loggingIdentity<T>(arg: T[]): T[] {
console.log(arg.length);
return arg;
}
O :
function loggingIdentity<T>(arg: Array<T>): Array<T> {
console.log(arg.length);
return arg;
}
Y aquí hay una cita de algunas notas de la versión:
Específicamente,
number[]es una versión abreviada deArray<number>, así comoDate[]es una abreviatura deArray<Date>.
Acerca del modificador de tipo readonly
TypeScript 3.4, introduce el modificador de tipo readonly. Con una precisión:
el modificador de tipo
readonlysolo se puede usar para la sintaxis en tipos de arrays y tipos de tuplas
let err2: readonly Array<boolean>; // error!
let okay: readonly boolean[]; // works fine
La siguiente declaración es equivalente a readonly boolean[]:
let okay2: ReadonlyArray<boolean>;
Respuesta #2
Hay una diferencia cuando estás definiendo arreglos de longitud fija. No puedes definir un arreglo de longitud fija con Array<>, tienes que usar la sintaxis abreviada:
const myFunc1 = (arg: [string, number, boolean]) => {
console.log(arg);
};
myFunc1(["hello world", 123, true]);
// error: TS2314: Generic type 'Array ' requires 1 type argument(s).
const myFunc2 = (arg: Array<string, number, boolean>) => {
console.log(arg);
};
myFunc2(["hello world", 123, true])
