J'ai une fonction où j'ai des paramètres, certains d'entre eux sont facultatifs, certains obligatoires, par exemple
example(page: number, perPage: number, name?: string, status?: boolean) {
if (name !== null) {
// body
}
if (status !== null) {
// body
}
}
Parfois je l'appelle avec seulement status p >
example(1, 25, null, true);
Cela signifie que true il y aura comme nom ce qui n'est pas la façon dont je veux faire cela. Changer l'ordre dans la déclaration de fonction n'aide pas parce que parfois je n'ai que le name .
J'essayais quelque chose comme ça, et dans mon service vérifie si le paramètre n'est pas égal à null .
example(1, 25, true);
example.service.ts
example(page: number, perPage: number, name?: string, status?: boolean) {
// Body
}
Mais je ne pense pas que ce soit la meilleure façon de gérer cela.
4 Réponses :
Pas sûr, mais avez-vous essayé de passer un objet au lieu d'une liste d'arguments?
example(data: {page: number, perPage: number, name?: string, status?: boolean}) {
//code goes here
}
example({page: 1, perPage: 25, status: true})
Dans ce cas, vous obtiendrez la valeur exacte que vous avez passée dans l'objet
Il existe plusieurs façons de gérer cela. La première consiste à passer le troisième argument comme indéfini
example({page: 1, perPage: 25, status: true});
// in your function you can use destructuring for brevity
interface Options {
page: number; perPage: number; name?: string; status?: boolean;
}
example(options: Options) {
const {page, perPage, name, status} = options
// Body
}
Une autre façon est d'accepter un seul argument qui est un objet
interface Options {
page: numberl; perPage: number; name?: string; status?: boolean;
}
Ceci fait que votre fonction se comporte comme elle prend des arguments nommés.
example(1, 25, undefined, true);
Lorsque vous ne transmettez aucune valeur à un paramètre facultatif, leur valeur devient indéfinie (Source: docs ). Vous pouvez donc simplement passer undefined pour ce paramètre particulier.
Pour appeler example () avec uniquement status
example(1, 25, undefined, true);
Passez simplement le paramètre sous forme d'objet et itérez cet objet dans la méthode
example(paramObj) {
//iterate params here
let paramArr = Object.keys(paramObj)
}
//calling
example({name:'Xyz Person'});