如果我有两个打字稿文件,那么让我们说a.ts和b.ts a.ts内容是:
export class A {
greet():void{
console.log("hi");
}
}
b.ts内容是:
export class B {
constructor(){
var a:A=new A();
a.greet();
}
}
new B();
我想用https://github.com/Railk/T3S和/或https://github.com/lavrton/sublime-better-typescript
编译这些文件问题是,如果我编译文件b.ts,它无法看到文件a.ts我是否将a.ts添加到项目中。 所以,我写了一个compile.bat文件(我用它作为构建系统),它将文件收集到一个txt中,然后我使用这样的命令:
dir DIRECTORY\*.ts /b /s > DIRECTORY\ts-files.txt
tsc @DIRECTORY\ts-files.txt --outDir OUTPUT_DIRECTORY
它工作得很好(所有js文件编译得很好)但是当我在编辑器中看到源代码时,它仍然无法识别其他文件中的引用。
所以,我有一个buld系统,效果很好。如果我使用T3S,它的效果很好,但只有一个文件,没有任何外部引用。
我该如何解决这个问题?
答案 0 :(得分:0)
并非所有集成开发环境都会自动扫描TypeScript文件。
Visual Studio和WebStorm会将项目中的所有文件视为隐式引用(如果不想要引用文件,这本身可能会导致问题 - 但大部分时间它都是一个有用的功能)。
在这些IDE之外,您需要提供参考注释:
///<reference path="a.ts" />
例如,如果从命令行手动运行或使用运行命令的工具。
答案 1 :(得分:0)
当项目增长时,您通常会得到循环依赖/引用:A
引用B
引用C
引用A
...
我们发现的唯一方法是编写单个定义文件,例如definitions.d.ts
,其中引用所有 Typescript文件
///<reference path="A.ts" />
///<reference path="B.ts" />
///<reference path="C.ts" />
然后,在每个Typescript文件中,都有definitions.d.ts
///<reference path="definitions.d.ts" />
修改强>
作为替代方案,请转到require
:对于CommonJs“样式”,请使用tsc
标记
--module commonjs
并在Typescript文件中,import
资源
import A = require('./A') //no .ts in the name