我希望这很简单!
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'.
我没有想法。我怎样才能得到一个干净的编译?
提前感谢您提供的任何时间和想法!
答案 0 :(得分:1)
找不到“要求”?听起来它不知道Node.js
包含node.d.ts
绝对是一个好主意。但是,您应该使用import/require
而不是var/require
(或let/require
,const/require
)。区别在于import
告诉TypeScript它是一个模块。 (more on modules)
/// <reference path="./typings/node/node.d.ts" /> // <==== new line, only change
问题是路径错了。怀疑你需要main
(或browser
)。
PS:建议使用tsconfig.json
(https://basarat.gitbooks.io/typescript/content/docs/project/tsconfig.html)和exclude
来排除您不想要的打字版本。