Случай с переключателем типов - PullRequest
1 голос
/ 07 июня 2019

У меня есть то, что выглядит как простая ситуация.Мне нужно отправить полезную нагрузку через FCM, и я использую машинописный текст для сбора данных:

    let msg;
    switch(entity){
        case "dog" : {
            msg = {name : theName, paws : String(after.paws)}
            break;
        }
        default: {
            msg = {name : theName, headType : String(after.headType)}
        }
    }
    const payload = {
        data: msg
    };

    const response = await admin.messaging().sendToDevice(tokens, payload); // error here

компилятор настаивает на том, что msg имеет три поля и что в любом случае одно из них будет неопределенным -- либо paws, либо headType - и эта полезная нагрузка FCM не допускает неопределенности.Я просто хочу собрать глупый JSON для отправки клиентам без дублирования кодов.Есть ли секрет, который мне не хватает?

1 Ответ

2 голосов
/ 07 июня 2019

Вы можете определить type из msg. Вы можете сделать это как:

let msg: any;

OR

let msg: {name: string, paws?: string, headType?: string}

Лучший способ иметь модели в вашем приложении, чтобы вы могли иметь согласованность. Вы можете создать interface Message как:

message.interface.ts

export interface Message {
  name: string,
  paws?: string,
  headType?: string
}

и затем вы можете определить переменную msg как:

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