最近从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);
}
更新:根据下面的反馈,可能的答案。 对于像我这样的新手,他们从.Net / C#迁移到TS时,会产生混淆,因为在C#中,我们将接口命名为IAnimal(),然后使用一个名为Dog的类来实现IAnimal()。在TS中,我们具有Animal接口(不带I),命名该接口是为了让TS intellisense在vs代码中工作。另外,当您的api进入Angular时,它会返回一个Animal类型的可观察列表。基本上TS比JS更好,但是仍然有所有这些疯狂的东西。
答案 0 :(得分:1)
也许这个小例子可以为您解决问题。
interface Animal {
legs: number;
}
var dog: Dog = { legs: 4 };
type canine = typeof dog;
答案 1 :(得分:1)
像这样定义公司类型的变量:
let tempCompany: Company;
分配对象,只要对象与界面对齐,便可以使用:
tempCompany = this.someArrayOfCompanies.find(x => x.zipCode === 65432);