打字稿:与"声明:真"混淆规则

时间:2017-01-15 04:27:50

标签: typescript

假设我有一个app.ts文件:

interface IApp {}
export class App implements IApp {}

在tsconfig.json中将declaration设置为true,我将收到错误消息:

error TS4019: Implements clause of exported class 'App' has or is using private name 'IApp'.

但是,如果我在另一个文件中声明IApp并导入它,则问题将得到解决:

import { IApp } from './interface';
export class App implements IApp {}

在我看来,这两个实现都在IApp文件范围内使用私有变量app.ts,那么为什么第一个失败但第二个成功?

1 个答案:

答案 0 :(得分:1)

你需要

export interface IApp {}

第二个可行,因为你需要在另一个文件中导出该界面才能使用它。

可以找到详细信息here

  

使用--declaration标志时会发生此错误,因为编译器正在尝试生成与您定义的模块完全匹配的声明文件。