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

ไทป์สคริปต์: การใช้อินเทอร์เฟซด้วยฟังก์ชันสแตติก/ไม่มีชื่อ


ฉันจำเป็นต้องนำไปใช้งานอินเทอร์เฟซ Typescript (แบบง่าย) ต่อไปนี้ของไฟล์ d.ts:

interface SomeLibrary {
    someProperty: SomePropertyClass;
    someMethod();
    (someParam: string): SomeClass; // don't know hot to implement this
}

ฉันจะทำการใช้อินเทอร์เฟซนี้ในคลาสของตัวเองได้อย่างไร? โดยเฉพาะอย่างยิ่งเมทอดที่ไม่มีชื่อเป็นปัญหา เมทอดเหล่านั้นถูกเรียกใช้อย่างไร?

คำตอบ #1

อินเทอร์เฟซที่คุณแสดงไม่สามารถถูกเติมเต็มโดยคลาสใน TypeScript ได้

อินเทอร์เฟซแบบนี้มักถูกสร้างขึ้นเพื่ออธิบายไลบรารีที่ใช้รูปแบบที่แตกต่างกัน

ตัวอย่างหนึ่งของวิธีที่คุณสามารถตอบสนองต่ออินเทอร์เฟซจะแสดงด้านล่าง:

var example: SomeLibrary = <any> function(someParam: string) {
    console.log('function called');
    return new SomeClass();
}
example.someProperty = new SomePropertyClass();
example.someMethod = function () { console.log('method called'); };

var x = example('x');
var y = example.someProperty;
var z = example.someMethod();