在Animal.ts中使用TypeScript假设以下类定义:
module Animals
{
export class Animal { }
}
Run Code Online (Sandbox Code Playgroud)
如果我想在一个单独的文件中创建一个Dog类,请使用以下代码在Dog.ts中说:
module Animals
{
export class Dog extends Animal { }
}
Run Code Online (Sandbox Code Playgroud)
当前范围中不存在名称"Animal",是我在类定义Dog中得到的错误.
将以下行添加到Dog.ts
/// <reference path="Animal.ts"/>
Run Code Online (Sandbox Code Playgroud)
修复了编译错误但是为什么这是必要的,如果在同一个模块中定义了两个类?
换句话说,我希望模块声明跨越文件,每个类或接口定义都在自己的文件中.这是最好的做法吗?
首先,如果您使用一次编译两个文件
tsc Animal.ts Dog.ts
Run Code Online (Sandbox Code Playgroud)
一切都会好起来的.在编译Typescript文件时,需要使编译器知道实际构成程序的文件.这可以使用源引用///或通过向编译器提供所有文件来完成.这与其他语言有些不同,例如java,编译为中间表示并且具有CLASSPATH搜索作为程序一部分的其他文件的位置的概念.
小智 2
/// 引用是必要的,因为编译器需要以某种方式知道 Animal 的定义位置。如果你不告诉它去哪里查找,它就无法知道它在哪个源文件中。
我不确定这本身是最佳实践(需要更多地了解您的应用程序),但我几乎不认为这是一种反模式,所以我认为您可以随意这样做。TypeScript 中的模块故意是开放式的,以允许这种模式。
| 归档时间: |
|
| 查看次数: |
3866 次 |
| 最近记录: |