Ответ 1
Нет никакой семантической разницы
Там нет никакой разницы вообще. Type[]
- это сокращенный синтаксис для массива Type
. Array<Type>
- это общий синтаксис. Они полностью эквивалентны.
Справочник дает пример здесь. Это эквивалентно записи:
function loggingIdentity<T>(arg: T[]): T[] {
console.log(arg.length);
return arg;
}
Или:
function loggingIdentity<T>(arg: Array<T>): Array<T> {
console.log(arg.length);
return arg;
}
А вот цитата из некоторых заметок о выпуске:
В частности,
number[]
является сокращенной версиейArray<number>
, так же какDate[]
является сокращенной записью дляArray<Date>
.
Однако в некоторых случаях требуется сокращенный синтаксис
Начиная с TypeScript 3.4, есть разница для нового модификатора типа readonly
. Действительно:
модификатор типа
readonly
можно использовать только для синтаксиса для типов массивов и типов кортежей
let err1: readonly Set<number>; // error!
let err2: readonly Array<boolean>; // error!
let okay: readonly boolean[]; // works fine