【发布时间】:2019-04-30 16:40:43
【问题描述】:
最近从 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 好,但仍然有所有这些疯狂的东西。
【问题讨论】:
标签: javascript typescript tslint