# Field
# @Field
Ce décorateur décrit un champ pour tous les types GraphQL (interface
, input
, ou type
).
@ObjectType()
@InputType("InputInterface")
@InterfaceType("UserInterface")
class User {
@Field()
username: string;
}
Donnerait en SDL:
type User {
username: string;
}
interface UserInterface {
username: string;
}
input UserInput {
username: string;
}
# @ObjectField
Fonctionne exactement comme @Field
excepté qu'il paramètre seulement le champ de @ObjectType
.
Son fonctionnement est détaillé sur la page dédiée au type ObjectType.
@ObjectType()
@InputType("InputInterface")
@InterfaceType("UserInterface")
class User {
@ObjectField()
username: string;
}
Donnerait en SDL:
type User {
username: string;
}
interface UserInterface {
}
input UserInput {
}
# @InterfaceField
Fonctionne exactement comme @Field
excepté qu'il paramètre seulement le champ de @InterfaceType
.
Son fonctionnement est détaillé sur la page dédiée au type InterfaceType.
@ObjectType()
@InputType("InputInterface")
@InterfaceType("UserInterface")
class User {
@InputField()
username: string;
}
Donnerait en SDL:
type User {
}
interface UserInterface {
username: string;
}
input UserInput {
}
# @InputField
Fonctionne exactement comme @Field
excepté qu'il paramètre seulement le champ de @InputType
.
Son fonctionnement est détaillé sur la page dédiée au type InputType.
@ObjectType()
@InputType("InputInterface")
@InterfaceType("UserInterface")
class User {
@InputField()
username: string;
}
Donnerait en SDL:
type User {
}
interface UserInterface {
}
input UserInput {
username: string;
}
# Paramètres de field
Les décorateurs de nature "field" possèdent toutes les mêmes signatures:
@Field
@ObjectField
@InputField
@InterfaceField
@Query
@Mutation
@Subscription
(params.subscribe
requis)
# name
Vous pouvez changer le nom du champ GraphQL grâce à ce paramètre.
@ObjectType()
class User {
@Field("userUsername")
username: string;
}
Donnera en SDL:
type User {
userUsername: String
}
# type
Ce paramètre pâlit aux limitations de TypeScript.
Il est nécessaire quand le type ne peut être inféré comme avec:
- Des dépendances circulaires (A dépend de B et B dépend de A)
- Des tableaux (détails)
- Des types génériques (détails)
- Des types qui diffèrent du type inféré (comme pour les enum ou union)
- Pour un champ nullable ou requis
@ObjectType()
class User {
@Field(type => [String])
username: string[];
}