簡體   English   中英

Typescript-請在這里如何創建類實例?

[英]Typescript - How the class instance is created here please?

我這里有一些代碼。 我的問題是我無法理解實例的創建方式。 為什么我們在“ new Calculator”(第4行)之后使用“:Calculator”(第3行)。 它們是有區別的 ? 我知道我有一個關於Typescript的問題,但是當我在Angular中進行測試時發現了這段代碼。 我也搜索了一些教程,但沒有找到解釋。

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

    let calculator: Calculator;

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

您的“ calculator.ts”文件可能具有以下內容:

export class Calculator {
    ...
}

當您import { Calculator } from './calculator'; ,您可以在當前文件中導入Calculator類。

let calculator: Calculator; 會聲明一個變量calculator並為其賦予類型為Calculator <-。因此,您專門說您將在此變量中包含Calculator對象。 這是為了理解打字稿和完成代碼,

這將創建該類的新實例。

 calculator = new Calculator(); 

簡而言之,您可以使用:計算器為該變量提供類型 ,另一方面,它在beforeEach范圍之前聲明,因此可以在測試中使用。

如果你做了

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

計算器將無法訪問。

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行表示變量的類型聲明,但起初是未定義的,因此您需要創建該類型的新實例,這就是為什么在下一行中它要執行new Calculator()

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM