Array<Type> VS Type[] in typoscript

Voor zover ik weet kan het type van een eigenschap op twee manieren worden gedefinieerd als het een array is.

property_name: type

waar type kan zijn

Array<string>, Array<MyType>, etc. (e.g. let prop1: Array<string>)

en

string[], MyType[], etc. (e.g. let prop1: string[])

Wat is het verschiltussen de twee gevallen? Of begrijp ik iets verkeerd (misschien iets over <> gebruikt bij het casten?)

BEWERKaangezien de vraag is gemarkeerd als duplicaat, ben ik me ervan bewust dat er een andere vraag is over [], maar toch heb ik ernaar gekeken voordat ik het plaatste en voor mij ging het meer over het type ‘elke’ dan de verschillende [] VS <> ik vroeg


Antwoord 1, autoriteit 100%

Er is geen semantisch verschil

Er is helemaal geen verschil. Type[]is de verkorte syntaxisvoor een array van Type. Array<Type>is de algemene syntaxis. Ze zijn volledig gelijkwaardig.

Het handboek biedt hier een voorbeeld. Het komt overeen met schrijven:

function loggingIdentity<T>(arg: T[]): T[] {
    console.log(arg.length);
    return arg;
}

Of:

function loggingIdentity<T>(arg: Array<T>): Array<T> {
    console.log(arg.length);
    return arg;
}

En hier is een citaat uit enkele release-opmerkingen:

In het bijzonder is number[]een verkorte versie van Array<number>, net zoals Date[]een afkorting is voor Array<Date>.

Over de readonlytype modifier

TypeScript 3.4, introduceert de readonlytype modifier. Met een precisie:

de readonlytype modifier kan alleen worden gebruikt voor syntaxis op array-types en tuple-types

let err2: readonly Array<boolean>; // error!    
let okay: readonly boolean[]; // works fine

De volgende declaratie is gelijk aan readonly boolean[]:

let okay2: ReadonlyArray<boolean>;

Antwoord 2

Er is een verschil wanneer u arrays met een vaste lengte definieert. U kunt geen array met vaste lengte definiëren met Array<>, u moet de verkorte syntaxis gebruiken:

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])

Other episodes