구체적으로이 시나리오를 상상해보십시오. jquery 플러그인 $ .mega()가 있습니다. 다음과 같이타이프 스크립트가 '사용하지 않는'의존성을 자동으로 버리지 않도록하려면 어떻게해야합니까?
나는이 플러그인에 대한 정의 파일을 만들 수 있습니다 타이프 라이터가 자동으로 트림 이후
/// <reference path="../../defs/jquery/jquery.d.ts"/>
/// <reference path="../../defs/mega/mega.d.ts"/>
import mega = require('mega');
import $ = require('jquery');
((...r:any[]) => {})(mega); // <---- WTF!
$('.target').mega();
및 폐기 미사용 :
/// <reference path="../jquery/jquery.d.ts"/>
// Extend jquery with .mega()
interface JQuery { mega(options?:any):void; }
// Declare an external module, to import mega using AMD.
// NB. You still need to setup require.js to find the bower module.
declare module mega { export function dummy():void; }
declare module "mega" { export = mega; }
그럼 내가 사용하는 스크립트에서 플러그인을 호출 할 수 있습니다 모듈을 실제로 사용하지 않고 최적화 단계로서의 종속성을 제거하면 해당 모듈이 폐기되므로 강제로 모듈 사용을 "위조"합니다.
그래서define(["require", "exports", 'jquery'], function(require, exports, $) {
//((...r:any[]) => {})(mega);
$('.target').mega();
});
필요가 타이프 라이터가 컴파일 할 때 '최적화'되지 않습니다 포함하는 보장하는 몇 가지 방법이이없이
((...r:any[]) => {})(mega);
는 컴파일 된 자바 스크립트처럼 보인다?
컴파일 플래그, 또는 ~
Nb를 나를 위해 잘 작동 할 정의 파일을 구축하는 특별한 방법 중 하나. 이것은 AMD의 경우 더 많지만 commonjs 모듈과 동일하게 적용됩니다.
[TypeScript : 컴파일시 참조되지 않은 가져 오기를 제거 할 수 있습니다.] (0120-367-301) – thomaux