Недавно перешел с C # на TypeScript.Ниже код работает нормально и без ошибок.Однако я подозреваю, что я не понял некоторые фундаментальные TS, поскольку мы просто определяем интерфейсы и используем их как объекты / классы.Как правильно объявить переменную типа, определенного в интерфейсе, а затем назначить эту переменную своему типизированному объекту.
let tempCompany = Company|undefined;
// I get error if I remove undefined in above line.
// Company is an interface with many properties
tempCompany = this.someArrayOfCompanies.find(x => x.zipCode === 65432);
if (tempCompany !== undefined) {
// error if I do not do this if check in above line
console.log(tempCompany.SalesFigure);
}
Обновление: возможный ответ на основе обратной связи ниже.Для новичков, таких как я, переходящих в TS из .Net / C #, возникает путаница, потому что в C # мы называем интерфейсы, такие как IAnimal (), а затем имеем класс с именем Dog, который реализует IAnimal ().В TS у нас есть интерфейс Animal (без I), который назван так, чтобы TS intellisense работал в коде.Дополнительно, когда вы заходите в Angular, он возвращает наблюдаемый список типа Animal.В основном TS лучше, чем JS, но все же есть все эти сумасшедшие вещи.