官术网_书友最值得收藏!

Structuring code into modules

By default, TypeScript generated JavaScript code that executes in what is called the global scope. This means code from one file is automatically available in another file. This in turn means that the functions we implement can overwrite functions in other files if the names are the same, which can cause our applications to break.

Let's look at an example in Visual Studio Code:

  1. Let's create a file called product.ts and enter the following interface for a product:
interface Product {
name: string;
unitPrice: number;
}
  1. Let's create another file, called orderDetail.ts, with the following content:
class OrderDetail {
product: Product;
quantity: number;
getTotal(discount: number): number {
const priceWithoutDiscount = this.product.unitPrice * this.quantity;
const discountAmount = priceWithoutDiscount * discount;
return priceWithoutDiscount - discountAmount;
}
}

The compiler doesn't give us any complaints. In particular, the reference to the Product interface in the OrderDetail class is able to be resolved, even though it's in a different file. This is because both Product and OrderDetail are in the global scope.

Operating in the global scope is problematic because item names can conflict across different files, and as our code base grows, this is harder to avoid. Modules resolve this issue and help us write well organized and reusable code.

主站蜘蛛池模板: 霍林郭勒市| 调兵山市| 徐州市| 合江县| 郎溪县| 斗六市| 丽水市| 綦江县| 麻栗坡县| 苏尼特左旗| 阳山县| 新竹县| 依安县| 宿松县| 五常市| 潜山县| 漳浦县| 沾益县| 西昌市| 洛隆县| 称多县| 义乌市| 彭泽县| 嫩江县| 五寨县| 车致| 银川市| 潼南县| 霍山县| 桓仁| 芦山县| 南召县| 盘山县| 凤庆县| 获嘉县| 铜陵市| 青州市| 离岛区| 临沭县| 柏乡县| 德庆县|