TypeScript TS2322:输入'类型的Foo'不能分配类型' IFoo'

时间:2015-11-05 03:22:54

标签: javascript typescript ecmascript-6

我尝试使用TypeScript的ES2015模块语法编写一些类。每个类在.d.ts文件中实现一个接口。

这是问题的MWE。

.d.ts文件中我有:

interface IBar {
  foo: IFoo;
  // ...
}

interface IFoo {
  someFunction(): void;
  // ...
}

我的出口是:

// file: foo.ts
export default class Foo implements IFoo {
  someFunction(): void {} 
  // ... 
}
// no errors yet.

我的导入是:

import Foo from "./foo";

export class Bar implements IBar {
   foo: IFoo = Foo;
}

这里的错误是:

error TS2322: Type 'typeof Foo' is not assignable to type 'IFoo'.
Property 'someFunction' is missing in type 'typeof Foo'.

这里有什么想法吗?

1 个答案:

答案 0 :(得分:17)

当您说foo: IFoo = Foo;时,您要将 Foo分配给IFoo。但是,接口IFoo由该类的实例实现。你需要这样做:

foo: IFoo = new Foo;