崇高的手稿

时间:2014-06-11 12:53:54

标签: typescript sublimetext3

如果我有两个打字稿文件,那么让我们说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,它的效果很好,但只有一个文件,没有任何外部引用。

我该如何解决这个问题?

2 个答案:

答案 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