打字稿未定义变量基本

时间:2018-11-28 17:34:45

标签: javascript typescript tslint

最近从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更好,但是仍然有所有这些疯狂的东西。

2 个答案:

答案 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);