javascript - typescript variable indefinida fundamental
Recientemente me mudé de C# a TypeScript. El siguiente código funciona bien y no hay errores. Sin embargo, sospecho que no he entendido algunos fundamentos de TS, ya que solo definimos interfaces y las usamos como objetos/clases. ¿Cuál es la forma correcta de declarar una variable de un tipo que está definido en una interfaz y luego asignar esa variable a su propio objeto tipado?
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);
}
Actualización: Posible respuesta basada en los comentarios a continuación. Para principiantes como yo que nos mudamos a TS desde .Net/C#, la confusión surge porque en C# nombramos las interfaces como IAnimal() y luego tenemos una clase llamada Dog que implementa IAnimal(). En TS tenemos la interfaz Animal (sin la I) que se nombra así para que el intellisense de TS funcione en VS Code. Además, cuando obtienes una API en Angular, devuelve una lista observable del tipo Animal. Básicamente, TS es mejor que JS, pero todavía hay todas estas cosas locas.
Respuesta #1
Tal vez este pequeño ejemplo aclare las cosas para ti.
interface Animal {
legs: number;
}
var dog: Dog = { legs: 4 };
type canine = typeof dog;
Respuesta #2
Define una variable de tipo Company así:
let tempCompany: Company;
Asignando un objeto, lo que tienes funcionaría, siempre y cuando el objeto se alinee con la interfaz:
tempCompany = this.someArrayOfCompanies.find(x => x.zipCode === 65432);
