TypeScript:处理从外部库导入

时间:2014-05-01 23:34:10

标签: javascript famo.us

我刚刚开始使用Famo.us,并希望将它作为一个机会同时学习打字稿,以利用它的精彩。所以我做了以下

  1. 根据文档
  2. 使用yo famous创建Famo.us项目
  3. 我不知道如何包含打字稿,所以我创建了一个typeScriptHTML项目,复制.csproj文件并手动编辑它。我尝试使用NVTS并指定它应该从现有文件夹创建它,但我总是得到一个错误,说文件路径太长。它检查了一些模块有很长的路径。甚至无法删除它们,系统也在说同样的事情。最后我放弃了这个想法并使用了typescript html应用程序。它没有产生任何错误。
  4. 我添加了一个文件app.ts,在其中编写了一些示例代码,并按预期生成了js文件。
  5. 现在我想将main.js翻译成main.ts并且我遇到了以下问题

    我。 var Engine = require('famous/core/Engine');错误无法找到符号'require'。

    II。 import Engine = require('famous/core/Engine')给出错误:无法解析外部模块“famous / core / Engine”。将路径更改为“../lib/famous/core/Engine”会出现类似的错误,并且文件名不同。

    III。创建了一个文件Famous.d.ts,但我认为我没有得到它我没有做正确的事情 declare module "famous/core/Engine" { class Engine{ public createContext(): Engine } export = Engine }

  6. 最后,我的困惑是如何将示例代码翻译成typescript:

     /*globals define*/
    define(function(require, exports, module) {
        'use strict';
        ///first
        var Engine = require('famous/core/Engine');
        var DeviceView = require('./DeviceView');
    
        var mainContext = Engine.createContext();
        var device;
    
        createDevice();
    
        function createDevice() {
            var deviceOptions = {
                type: 'iphone',
                height: window.innerHeight - 100
            };
            device = new DeviceView(deviceOptions);
            mainContext.add(device);
        }
    });
    

    任何帮助表示赞赏。

1 个答案:

答案 0 :(得分:2)

事实证明这比我想象的容易得多。一种方法是声明类并将其导出为模块

declare class Engine{
    ...
}
export module 'famous/core/Engine'{ export = Engine; }

使用此管理获得着名跑步的微小定义。