Typescript-请在这里如何创建类实例?

时间:2019-05-21 14:48:01

标签: angular typescript

我在这里有一些代码。我的问题是我无法理解实例的创建方式。为什么我们在“ new Calculator”(第4行)之后使用“:Calculator”(第3行)。它们是有区别的 ?我知道我有一个关于Typescript的问题,但是当我在Angular中进行测试时发现了这段代码。我也搜索了一些教程,但没有找到解释。

import { Calculator } from './calculator';
​
describe('Calculator', () => {

    let calculator: Calculator;

    beforeEach(() => {
        calculator = new Calculator();
    });
​
});

4 个答案:

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