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

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.

主站蜘蛛池模板: 特克斯县| 石棉县| 襄汾县| 威远县| 海伦市| 镇江市| 永仁县| 专栏| 南开区| 高密市| 资阳市| 正安县| 都安| 尉犁县| 安吉县| 彰化市| 朔州市| 惠州市| 哈密市| 平乐县| 拉孜县| 砚山县| 安新县| 大足县| 隆尧县| 沈阳市| 开江县| 右玉县| 陈巴尔虎旗| 临高县| 泌阳县| 望城县| 崇左市| 阿坝县| 榆树市| 张家口市| 鸡东县| 馆陶县| 哈巴河县| 武定县| 府谷县|