Lorsque vous faites cela:
export type Fruit = "Orange" | "Apple" | "Banana"
...vous êtes la création d'un type appelé' Fruit
qui ne peut contenir que les littéraux "Orange"
, "Apple"
et "Banana"
. Ce type s'étend String
, par conséquent, il peut être assigné à l' String
. Toutefois, String
ne PAS étendre "Orange" | "Apple" | "Banana"
, de sorte qu'il ne peut pas lui être attribué. String
est moins spécifique. Il peut être n'importe quelle chaîne.
Lorsque vous faites cela:
export type Fruit = "Orange" | "Apple" | "Banana"
const myString = "Banana";
const myFruit: Fruit = myString;
...il fonctionne. Pourquoi? Car le type d' myString
dans cet exemple est - "Banana"
. Oui, "Banana"
est le type. Il s'étend String
il est donc cessible String
. En outre, un type s'étend un Type d'Union quand il s'étend tout de ses composants. Dans ce cas, "Banana"
, le type, s'étend "Orange" | "Apple" | "Banana"
car il s'étend de l'un de ses composants. Par conséquent, "Banana"
est cessible "Orange" | "Apple" | "Banana"
ou Fruit
.