打字稿错误:TS2304找不到名称

时间:2019-03-02 18:12:46

标签: typescript namespaces

在打字课程中,我遇到了这些无法编译并给出错误TS2304的代码段。任何帮助表示赞赏。

文件ZooAnimals.ts:

namespace Zoo {
    interface Animal {
        skinType: string;
        isMammal(): boolean;
    }
}

文件ZooBirds.ts:

/// <reference path="ZooAnimals.ts" />
namespace Zoo {
    export class Bird implements Animal {
        skinType = "feather";
        isMammal() {
            return false;
        }
    }
}

用于编译文件的命令:

tsc --outFile Zoo.js ZooAnimals.ts ZooBirds.ts

抛出错误:

ZooBirds.ts:3:34 - error TS2304: Cannot find name 'Animal'.

3     export class Bird implements Animal {

1 个答案:

答案 0 :(得分:1)

要使用跨文件的接口(或更确切地说,跨多个namespace声明),必须将其导出(即使它是同一名称空间的一部分)。这将起作用:

namespace Zoo {
    export interface Animal {
        skinType: string;
        isMammal(): boolean;
    }
}
namespace Zoo {
    export class Bird implements Animal {
        skinType = "feather";
        isMammal() {
            return false;
        }
    }
}