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;
