TypeScript에서 AMD 패턴을 사용하여로드하려는 jQuery 플러그인이 여러 개 있습니다. 예를 들어 다음 구조를 가질 수 있습니다.내보내기가없는 TypeScript 선언의 비동기로드
/lib/jquery.myplugin.js
/app.ts
이 플러그인은 단순히 jQuery를 확장합니다. 새로운 최상위 함수 또는 변수를 제공하지 않습니다. 예는 다음과 같을 수 있습니다 내가 $('#my-element').myExample()
뭔가를 호출 할 수 있습니다 app.ts 지금 그래서
interface JQuery {
myExample();
}
그 :
// jquery.myplugin.js
jQuery.fn.myExample = function() { ... }
대응 jquery.myplugin.d.ts 파일처럼 보인다. 여기서는 Microsoft가 jquery.d.ts 선언을 이미 가지고 있다고 가정합니다.
내 질문은이 라이브러리를 비동기 적으로로드하고 TypeScripts 정적 입력을 활용하는 방법입니까? 나는이처럼 사용할 수 있습니다
/// <reference path="lib/jquery.myplugin.d.ts"/>
하지만 내 HTML에 <script>
태그를 추가하는 저를 필요로하며, 라이브러리가 비동기 적으로로드되지 않습니다. 내가 import myplugin = module('lib/jquery.myplugin')
을 쓸 수 없습니다
define(["require", "exports", "lib/jquery.myplugin"], function (require, exports, __jquery.myplugin__) {
...
// Use my plugin
$('#my-element').myExample();
}
가 파일 : 나는 타이프 라이터가이 코드를 생성합니다.
가장 가까운 것은을 인터페이스 선언으로 다른 ts 파일을 참조하고 적어도 하나의 내보내기를 포함하는 것입니다. 그러나이 라이브러리에서 내보낼 내용은 없으며 원하는 출력을 얻으려면 내보내기를 추가 할뿐만 아니라 호출해야합니다.
업데이트 : 나는 해킹의 typescript.codeplex.com
나의 현재 해결 방법은 수동으로 필요'호출하는 것입니다 ([...],() => {...})'내 TypeScript 코드에서 중첩 된 require 호출을 생성합니다. 이상적이지만 멀리서도 작동합니다. – dcstraw