2016-02-14 74 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文件中嗎?