gpt4 book ai didi

typescript - 如何防止 typescript 自动丢弃 'unused' 依赖项?

转载 作者:搜寻专家 更新时间:2023-10-30 21:06:00 24 4
gpt4 key购买 nike

具体想象一下这个场景:我有一个jquery插件$.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; }

然后我可以使用以下脚本从脚本调用插件:

/// <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();

由于 typescript 自动修剪和丢弃未使用的依赖项作为优化步骤,没有实际使用模块,该模块被丢弃,所以我不得不“伪造”模块使用:

((...r:any[]) => {})(mega); 

没有这个,编译后的 javascript 看起来像:

define(["require", "exports", 'jquery'], function(require, exports, $) {
//((...r:any[]) => {})(mega);
$('.target').mega();
});

那么,有什么方法可以确保 require include 在 typescript 编译时不会被“优化”吗?

无论是编译标志,还是构建定义文件的特殊方式对我来说都很好~

铌。这更多地适用于 AMD,但它同样适用于 commonjs 模块。

最佳答案

您可以使用 amd-dependency 指定您希望在 amd define 调用中提升的内容,例如:

/// <amd-dependency path="mega" />

关于typescript - 如何防止 typescript 自动丢弃 'unused' 依赖项?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24135072/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com