Лучший подход для определения интерфейса машинописи для запроса ниже - PullRequest
0 голосов
/ 14 апреля 2020

Я новичок в машинописи. У меня есть функция, которая принимает следующие параметры:

customerId: number, // mandatory
courseDate: Date,   // optional, by detault to current date, if given use provided date
loyaltyLevel: enum loyaltyLevelA loyaltyLevelB // mandatory, based on the value a boolean needs to be saved
proposal: string, // optional , Only when loyalty level is loyaltyLevelB
Sections: [{ // optional array
 slNo: number // mandatory
 endDate: Date // optional
}]
Products: [{ // optional array
 pdtNo: number  // mandatory
 codeNo: number // optional
 endDate: Date // optional
}]

Кто-нибудь может мне предложить какой-нибудь способ обработки нижеприведенного сценария ios с интерфейсами?

a) Optional* : Section or Products, defined above, any one or both of them can also be present. At least one should be present.
b) proposal string is optional and will be able to provide value only when loyalty level is loyaltyLevelB
c) handle loyaltyLevel with enum and based on the value boolean needs to be saved.
d) These arguments are used to save into a particular API, so getData function should accept dynamic parameters. can we do this with Partial interface? 

private function getData(customerId: number, 
        courseDate: Date = new Date(), 
        loyaltyLevel, // not sure what to do with this
        proposal?: string,
        Sections?: ISectionInterface,
        Products?: IProductsInterface
        ) {
    return ({
      cid: customerId,
      courseDate: courseDate,
      loyaltyLevelA : true or false based on user input
      loyaltyLevelB: true or false based on user input
      proposal: proposal,
      Sections: Sections,
      Products: Products
    });
}

Может кто-нибудь иметь представление о том, как мы можем реализовать вышеупомянутый подход лучше с использованием машинописных интерфейсов. Любая помощь будет очень признательна.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...