Доступ к переменной вне блока

#typescript

#typescript

Вопрос:

Я скорее новичок в TypeScript (чтобы было ясно, я пришел из вселенной Java). В настоящее время я пытаюсь создать такой mapper:

 public getApercuTypePrestationFromTypePrestationEX044(typePrestationEX044: TypePrestationEX044): ApercuTypePrestation {
        let apercuTypePrestation: ApercuTypePrestation;
        if (null != typePrestationEX044) {
            apercuTypePrestation = new ApercuTypePrestation();
            apercuTypePrestation.codeTypePrestation == typePrestationEX044.code;
            apercuTypePrestation.libelleTypePrestation == typePrestationEX044.libelle;
        }

        console.log("A = "   typePrestationEX044.code);
        console.log("B = "   apercuTypePrestation.libelleTypePrestation);

        return apercuTypePrestation;
    }
  

Но это, очевидно, не работает: в консоли у меня есть:
A = A8C
B = не определено

Как я могу это исправить?

Комментарии:

1. Можете ли вы указать, какой объект вы передаете этой функции? Возможно ли это apercuTypePrestation.libelleTypePrestation undefined ?

Ответ №1:

Вы используете == вместо = . У меня есть изменения == = , теперь они должны работать.

 public getApercuTypePrestationFromTypePrestationEX044(typePrestationEX044: TypePrestationEX044): ApercuTypePrestation {
        let apercuTypePrestation: ApercuTypePrestation;
        if (null != typePrestationEX044) {
            apercuTypePrestation = new ApercuTypePrestation();
            apercuTypePrestation.codeTypePrestation = typePrestationEX044.code;
            apercuTypePrestation.libelleTypePrestation = typePrestationEX044.libelle;
        }

        console.log("A = "   typePrestationEX044.code);
        console.log("B = "   apercuTypePrestation.libelleTypePrestation);

        return apercuTypePrestation;
    }
  

В typescript
== или === используется для сравнения, а не для присвоения, чтобы присвоить значение, которое вы должны использовать =

Обновить

Я также заметил, что вы typePrestationEX044 неправильно проверяете значение null.

Измените это:

 if (null != typePrestationEX044) {
            apercuTypePrestation = new ApercuTypePrestation();
            apercuTypePrestation.codeTypePrestation = typePrestationEX044.code;
            apercuTypePrestation.libelleTypePrestation = typePrestationEX044.libelle;
        }
  

К этому

 if (typePrestationEX044) {
            apercuTypePrestation = new ApercuTypePrestation();
            apercuTypePrestation.codeTypePrestation = typePrestationEX044.code;
            apercuTypePrestation.libelleTypePrestation = typePrestationEX044.libelle;
        }
  

Это if условие автоматически проверяет undefined , null или boolean

Комментарии:

1. Вау, я такой ГЛУПЫЙ lmao. Я так сильно думал, что в TypeScript есть что-то, чего я не понимаю, что я даже не заметил, что использую == вместо = . Хахаха, теперь это работает, спасибо.

2. Нет проблем. Иногда это случается.

3. Изменение null != var на var может изменить семантику (поскольку пустая строка, например, является ложной). Не уверен, применимо ли это здесь, просто хотел напомнить.

4. @Cerberus да, мы должны использовать это по мере необходимости.