0

Typescript (1.8)에서 외부 라이브러리의 프로토 타입을 확장하고 싶습니다. 제 경우의 외부 라이브러리는 NuGet의 Typescript 정의 파일을 포함하고있는 google.maps입니다.Typescript에서 외부 라이브러리의 프로토 타입 확장

import "./extensions.ts" 

let p1 = new google.maps.LatLng(5, 5); 
let p2 = new google.maps.LatLng(10, 10); 

console.log(p1.distanceTo(p2)) 
: 그럼 난 그것을 사용하려는

/// <reference path="./google.maps.d.ts" /> 
export {} 

declare global { 
    interface google.maps.LatLng { 
     distanceTo(google.maps.LatLng): number; 
    } 
} 

google.maps.LatLng.prototype.distanceTo = function(other) { 
    return google.maps.geometry.spherical.computeDistanceBetween(this, other); 
} 

: 지금은 파일에과 같이 "extensions.ts의"거리 함수를 추가하여은 google.maps.LatLng의 프로토 타입을 확장 할

그러나이 코드는 많은 오류와 함께 작동하지 않습니다./ 해결 방법은 무엇입니까? Array 또는 String과 같은 전역 선언을 확장하는 것은 앞에서 설명한대로 here처럼 작동합니다.

참고 : 결과 파일이 당신은 또한 구글을 포함 할 필요가 작동하려면 자바 스크립트 라이브러리 매핑 : 당신은 거의 다

<script type="text/javascript" src="http://maps.googleapis.com/maps/api/js?libraries=geometry&key=[your-key-here]&sensor=FALSE"></script> 

답변

1

을, 당신이 네임 스페이스와 함께 인터페이스를 정의 할 수없는 단지 . 그것은 컴파일

declare global { 
    module google.maps { 
     interface LatLng { 
      distanceTo(other: LatLng): number; 
     } 
    } 
} 

,하지만 난 그게 내가 런타임 문제를 확인하지 않은 실행하지 않은 :
은이어야한다. 또한

, 당신은 .ts 확장하지 않고 그것을 가져옵니다

import "./extensions" 
+0

내가 런타임 테스트를했고, 그것을 작동합니다. 고마워요 :) – Crine