我在这里有一些代码。我的问题是我无法理解实例的创建方式。为什么我们在“ new Calculator”(第4行)之后使用“:Calculator”(第3行)。它们是有区别的 ?我知道我有一个关于Typescript的问题,但是当我在Angular中进行测试时发现了这段代码。我也搜索了一些教程,但没有找到解释。
import { Calculator } from './calculator';
describe('Calculator', () => {
let calculator: Calculator;
beforeEach(() => {
calculator = new Calculator();
});
});
答案 0 :(得分:1)
您的“ calculator.ts”文件可能具有以下内容:
export class Calculator {
...
}
执行import { Calculator } from './calculator';
时,会将Calculator类导入到当前文件中。
let calculator: Calculator;
将声明一个变量calculator
,并为其赋予类型Calculator
<-因此,您明确地说您将在此变量中拥有Calculator
个对象。这是供打字稿理解和代码完成
这将创建该类的新实例。
calculator = new Calculator();
答案 1 :(得分:1)
简而言之,您可以使用:计算器为该变量提供类型,另一方面,将其声明为超出每个范围,这样它就可以在测试。
如果您这样做
beforeEach(() => {
let calculator = new Calculator();
});
将无法访问计算器。
答案 2 :(得分:1)
import { Calculator } from './calculator'; // importing Calculator class
describe('Calculator', () => { // Describing feature in BDD manner
let calculator: Calculator;
// Declaring variable calculator so it's accessible within whole describe() block
beforeEach(() => { // This hook will be called before each test in your feature
calculator = new Calculator();
// and therefore will create new instance of a Calculator for each test
});
// Here you probably will see something like
it('should return sum of 2 numbers', () => {
const result = calculator.add(2,3); // actual instance used
expect(result).toEqual(5);
});
});
答案 3 :(得分:1)
第3行表示变量的类型声明,但是起初是未定义的,因此您需要创建该类型的新实例,这就是为什么在下一行中它会执行new Calculator()
。