【问题标题】:Is there a way to inline SizzleJS when using TypeScript?使用 TypeScript 时有没有办法内联 SizzleJS?
【发布时间】:2013-11-15 17:46:42
【问题描述】:

我需要将 Sizzle 内联到 TypeScript 类中,这样我就可以在类中使用它。我可以忍受没有它的定义文件,而只是将它作为“任何”。但是,如果我把它放在文件的顶部,编译器会从缩小的 Sizzle 代码中引发错误。有没有办法做到这一点?

【问题讨论】:

    标签: typescript sizzle


    【解决方案1】:

    我的建议是将它保存在 JavaScript 文件中,并在 TypeScript 文件中添加您需要的位的声明 - 但您已经特别询问了如何将它内联到 TypeScript 文件中,所以这里是回答你的问题...

    你可以加入一些类型注释和类型断言以“摆脱它”——尽管这将是相当粗暴的......

    我已将完整版放到网上,因为它太大而无法放在这里,但本质上我要么在表达式前面加上类型断言:

    var high = <any>"0x" + escaped - 0x10000;
    

    或者添加类型注解:

    var addCombinator: any = function( matcher, combinator, base ) {
    

    对于任何违反推断类型的项目。如果您愿意,您当然可以放置一个合理的类型注释而不是任何类型的注释。

    Fully annotated Sizzle.

    【讨论】:

    • 我担心这是我最好的选择。我对这条路线并不疯狂,因为每次我想升级到新版本的 Sizzle 时,我都必须进行更改。我还必须定义类型,因为 Sizzle() 已在窗口或声明它的函数上注册 - 编译器看不到。所以感觉就像一个 hack,我真的需要绕过两个依赖项。
    • 您在程序中还使用了什么?例如,您是否可以在稍后的工作流程中使用捆绑来组合这两个文件(即,将它们作为两个文件处理,但将 TypeScript 文件的 JavaScript 输出与嘶嘶声文件结合起来,因此您最终仍然只有一个依赖项?
    • 我只是在调查。不过,这对我来说并不容易做出选择——因为我觉得我增加了相当多的复杂性/步骤,只是为了降低打字稿带来的复杂性。所以总而言之,我可能会更好地使用纯 js - 感觉很伤心..
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-04-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-09
    • 1970-01-01
    • 2012-03-22
    相关资源
    最近更新 更多