如何在单独的项目中使用自动生成的打字稿声明文件?

时间:2014-03-14 09:24:40

标签: javascript reference typescript

我开发了typescript库,它由位于不同ts文件中的几个类组成。

app.ts

//imported class from separate file    
import leafAdd = require('./Base/leaf');


export class MyClass {
    public leafInstance : leafAdd.Leaf;
}

var MyClassInstance = new MyClass();

代码工作正常,所以我想在一个新的单独项目中使用我的库,但我仍然不想传输整个代码。相反,我只想使用typescript编译器中的定义文件(通过添加--declarations标志生成)。声明文件如下所示:

app.d.ts

import leafAdd = require('./Base/leaf');

export declare class MyClass {
    public leafInstance : leafAdd.Leaf;
}

当我尝试在新项目中引用此文件时,它无论如何都不起作用:

newapp.ts

/// <reference path="./typings/app.d.ts" />

export class MyOtherClass{
    public myClass: MyClass; //Compiler error: Could not find symbol MyClass
    constructor() {
        //some other code
    }
}

我收到编译错误说:“找不到符号MyClass”

也许我错过了一些明显的东西,或者只是试图以错误的方式引用代码。如果有人能指出我正确的方向,我将非常感激。

1 个答案:

答案 0 :(得分:1)

好的我明白了。我应该看看app.d.ts文件的解决方案:)。简单来说,似乎包含

的声明文件
export declare class ...

无法使用

引用
/// <reference path="./path/to/declaration.d.ts" />

并且应该像任何其他模块/类一样导入。所以工作代码如下所示:

import myclMod = require('./typings/app') //please notice missing file extension - it confused me at the beginning :)
export class MyOtherClass{
    public myClass: myclMod.MyClass; 
    constructor() {
        //some other code
    }
}