TypeScript:如何获得干净的编译?

时间:2016-05-13 02:26:29

标签: node.js typescript

我希望这很简单!

TypeScript版本1.9.0-dev.20160512(可从npm install -g typescript@next获取并由@basarat推荐) Node v5.11.0 Windows 10.0.10586

文件1,u1c.ts

import * as u1u from "./u1u.ts"
let p = u1u.Promise
console.log(`from u1c.ts`)

文件2,u1u.ts

console.log(`from u1u.ts`)    
export let Promise = require(`bluebird`) //http://bluebirdjs.com

文件3,tsconfig.json(仅限相关部分);我想在ES6中编写并在ES3中输出(假设所有浏览器都知道它)。

{
    "compileOnSave": true,
    "complierOptions": {
        "lib": "ES6",
        "target": "ES3"
    }
}

结果1

>tsc u1c.ts
u1u.ts(2,22): error TS2304: Cannot find name 'require'.

找不到“要求”?听起来它不知道Node.js.我们教吧! typings让我可以访问node.d.ts的第五个版本,最后更改2016-05-09;我把它拉进去指着它。

new u1u.ts

/// <reference path="./typings/node/node.d.ts" />  // <==== new line, only change
console.log(`from u1u.ts`)    
export let Promise = require(`bluebird`) //http://bluebirdjs.com

结果2(与结果1相同)

>tsc u1c.ts
u1u.ts(2,22): error TS2304: Cannot find name 'require'.

我没有想法。我怎样才能得到一个干净的编译?

提前感谢您提供的任何时间和想法!

1 个答案:

答案 0 :(得分:1)

  

找不到“要求”?听起来它不知道Node.js

包含node.d.ts绝对是一个好主意。但是,您应该使用import/require而不是var/require(或let/requireconst/require)。区别在于import告诉TypeScript它是一个模块。 (more on modules

  

/// <reference path="./typings/node/node.d.ts" /> // <==== new line, only change

问题是路径错了。怀疑你需要main(或browser)。

PS:建议使用tsconfig.jsonhttps://basarat.gitbooks.io/typescript/content/docs/project/tsconfig.html)和exclude来排除您不想要的打字版本。