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 vanArray<number>
, net zoalsDate[]
een afkorting is voorArray<Date>
.
Over de readonly
type modifier
TypeScript 3.4, introduceert de readonly
type modifier. Met een precisie:
de
readonly
type 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])