【问题标题】:Require in Typescript打字稿中的要求
【发布时间】:2012-11-03 08:19:03
【问题描述】:

有人能解释一下这在 TypeScript 中的样子吗?可以通过进口来完成吗?

JS:

var casper = require('casper').create({})

CoffeeScript:

casper = require("casper").create()

Visual Studio 错误: 错误 1 ​​当前作用域中不存在名称“casper”

【问题讨论】:

    标签: javascript typescript


    【解决方案1】:
    import something = module('something');
    var somevar = something.create({});
    

    我认为这里要注意的一点是,今天的 TS 不允许对 module('something') 进行打点,所以你必须将你的陈述分成两部分。

    【讨论】:

    • 然而,一个关键的部分是你现在也必须“声明模块的东西”,否则它不会编译。
    【解决方案2】:

    我已经整理了一篇关于将 require.js 与 Typescript 结合使用的博客。
    http://blorkfish.wordpress.com/2012/10/23/typescript-organizing-your-code-with-amd-modules-and-require-js/ 您将能够编写如下代码:

    require["casper", (casper) => {
        var item = casper.create();
    };
    

    【讨论】:

    • 有一些方法可以在不引入上面笨拙的语法的情况下做到这一点 - 请查看下面的答案以了解具体方法。
    【解决方案3】:

    如果在编译 TypeScript 时使用模块标志:

    --module commonjs
    

    或者

    --module amd
    

    它将导入转换为适当的模块加载语句:

    import something = module('something');
    var somevar = something.create();
    

    【讨论】:

    • 它应该可以使用。如果一切都失败了,你可以使用你的 JS 行(你可能需要'declare function requires(name:string):any;'
    【解决方案4】:

    如果 casper 是用 JavaScript 编写的,你也需要为它声明一个模块(否则它不会编译)。

    按照惯例,您将此类声明放在名为 casper.d.ts 的单独文件中:

    declare module casper {
        export class SomeClassInCasper {
        }
    
        export function someFunctionInCasper();
    }
    

    您将在导入/模块上方的顶部包含对该 casper.d.ts 的引用:

    /// <reference path="casper.d.js" />
    
    import casper = import("casper");
    

    【讨论】:

      【解决方案5】:

      casper 通过 npm 安装在全局范围内。

      1. typings install dt~casperjs --global --save
      2. 声明 var casper; (在您的代码上)

      在这里可以看到一个带有打字稿的简短 casper:

      https://medium.com/@guyavraham/smoke-tests-casper-js-with-typescript-8b01b504f3a4

      【讨论】:

        【解决方案6】:

        我写了一篇关于在 TypeScript 中使用 Require 的相当全面的文章。我的方法不需要你使用丑陋的

        require(['dependency'], function() {
        
        }
        

        语法。相反,在 TypeScript 中,您可以使用方便的 import x = module("x") 语法。

        【讨论】:

        • “致命错误:未知:无法在第 0 行未知的输出缓冲显示处理程序中使用输出缓冲”。请在此处发布内容,因为 SO 不太可能下线。
        猜你喜欢
        • 2017-05-08
        • 2017-02-01
        • 2015-10-24
        • 2014-01-25
        • 1970-01-01
        • 2016-01-28
        • 2020-07-21
        • 1970-01-01
        • 2020-08-21
        相关资源
        最近更新 更多