2016-02-14 55 views
0

我正在用打字稿编写电子应用程序进行实验。我试图找出 需要外部模块的正确实施方式。typescript require(node)的类型

我的打字稿配置如下:

{ 
    "compilerOptions": { 
    "target": "es6", 
    "module": "commonjs", 
    "noImplicitAny": false, 
    "sourceMap": true, 
    "removeComments": false, 
    "outDir": "../build" 
    }, 
    "exclude": [ 
    "node_modules", 
    "typings/browser.d.ts", 
    "typings/browser" 
    ] 
} 

我有2个班,每个在它自己的文件。

class person { 
    private job: job; 
    public setJob(name: string) { 
     this.job = new job(name); 
    } 
} 

class job { 
    private name: string; 
    constructor(name : string) { 
     var externalTool = require('external-tool'); 
     //Do stuff with external tool. 
    } 
} 

而对于外部工具的TS文件:

declare module ExternalTool { 
    interface Something { 
     doSomethingWithName(name:string): string; 
    } 
} 

declare module "external-tool" { 
    export = ExternalTool; 
} 

需要由 'https://github.com/DefinitelyTyped/DefinitelyTyped/blob/master/node/node.d.ts'

目前 'externalTool' 变量definded的类型是 '任意' 的。我如何获得打字稿将其识别为正确的类型。 我可以用“import externalTool = require('external-tool')”来替换require,但那个人类不再识别作业类。

那么最好的方法是什么呢?

回答

0

我似乎有点跟踪如何在多个文件中使用打字稿。

经过一些谷歌搜索,并更好地理解它,我的解决方案是正确设置导出值。然后导入该文件中,我需要他们。

person.ts

import job = require('./job'); 
class person { 
    private job: job; 
    public setJob(name: string) { 
     this.job = new job(name); 
    } 
} 
export = person; 

job.ts

import externalTool = require('external-tool'); 
class job { 
    private name: string; 
    constructor(name: string) { 
     // var externalTool = require('external-tool'); 
     //Do stuff with external tool. 
    } 
} 
export = job; 

出于某种奇怪的原因我想打字稿会为我做这automagicly。

0

在包含您的job类的文件顶部使用import externalTool = require('external-tool');,并修复导致the person class no longer recognizes the job class问题的任何问题。你的ExternalTool东西是在.d.ts文件中吗?