[英]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.