假设我有一个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
,那么为什么第一个失败但第二个成功?
答案 0 :(得分:1)
你需要
export interface IApp {}
第二个可行,因为你需要在另一个文件中导出该界面才能使用它。
可以找到详细信息here
使用--declaration标志时会发生此错误,因为编译器正在尝试生成与您定义的模块完全匹配的声明文件。