인터페이스는 자바스크립트 런타임 환경에서는 전혀 영향을 주지 않는다. 인터페이스는 타입스크립트에서 변수의 구조로 선언된다.
다음 두가지는 동등한 선언이며 하나는 인라인 주석을 사용하고 두번째는 인터페이스를 사용한다.
// Sample A
declare var myPoint: { x: number; y: number }
// Sample B
interface Point {
x: number
y: number
}
declare var myPoint: Point
Sample B의 장점은 누군가가 myPoint 라이브러리에 빌드 된 라이브러리를 작성하여 새 멤버를 추가한다는 것으로 기존의 myPoint 선언에 쉽게 추가 할 수 있다.
// Lib a.d.ts
interface Point {
x: number; y: number;
}
declare var myPoint: Point;
// Lib b.d.ts
interface Point {
z: number;
}
// Your code
var myPoint.z; // Allowed!
위의 코드가 허용이 되는 이유는 타입스크립트의 인터페이스는 개방형이기 때문이다. 이러한 개념은 인터페이스를 사용하여 자바스크립트의 확장성을 모방하는 타입스크립트의 핵심 원리이다.