ค้นหาเว็บไซต์

javascript - TypeScript TS2322: ประเภท 'typeof Foo' ไม่สามารถกำหนดค่าให้กับประเภท 'IFoo'


ฉันกำลังพยายามสร้างคลาสบางตัวโดยใช้ไวยากรณ์โมดูล ES2015 กับ TypeScript แต่ละคลาสจะใช้อินเทอร์เฟซในไฟล์ .d.ts

นี่คือตัวอย่างงานเล็กที่ทำให้เกิดปัญหา

ในไฟล์ .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

เมื่อคุณพูดว่า foo: IFoo=Foo; คุณกำลังกำหนด คลาส Foo ให้กับ IFoo อย่างไรก็ตาม อินเทอร์เฟซ IFoo จะถูกใช้งานโดย อินสแตนซ์ ของคลาสนั้น คุณต้องทำดังนี้ :

foo: IFoo = new Foo;

บทความที่เกี่ยวข้อง