ความแตกต่างระหว่างdeclareและinterfaceใน TS:
ประกาศ:
declare class Example {
public Method(): void;
}
ในโค้ดด้านบนdeclareช่วยให้คอมไพเลอร์ TS ทราบว่าExampleมีการประกาศคลาสไว้ที่ใดที่หนึ่ง นี่ไม่ได้หมายความว่าจะรวมคลาสไว้อย่างน่าอัศจรรย์ คุณในฐานะโปรแกรมเมอร์ต้องรับผิดชอบในการจัดให้มีชั้นเรียนพร้อมใช้งานเมื่อคุณประกาศ (ด้วยไฟล์declareคีย์เวิร์ด)
อินเตอร์เฟซ:
interface Example {
Method(): void;
}
interfaceเป็นโครงสร้างเสมือนที่มีอยู่ใน typescript เท่านั้น คอมไพเลอร์ typescript ใช้เพื่อวัตถุประสงค์เดียวในการตรวจสอบประเภท เมื่อโค้ดถูกคอมไพล์ไปยัง JavaScript โครงสร้างทั้งหมดนี้จะถูกตัดออก คอมไพเลอร์ typescript ใช้อินเทอร์เฟซเพื่อตรวจสอบว่าออบเจ็กต์มีโครงสร้างที่ถูกต้องหรือไม่
ตัวอย่างเช่นเมื่อเรามีอินเทอร์เฟซต่อไปนี้:
interface test {
foo: number,
bar: string,
}
วัตถุที่เรากำหนดซึ่งมีประเภทอินเทอร์เฟซนี้จำเป็นต้องตรงกับอินเทอร์เฟซ:
// perfect match has all the properties with the right types, TS compiler will not complain.
const obj1: test = {
foo: 5,
bar: 'hey',
}