【发布时间】:2019-07-30 18:50:05
【问题描述】:
有点想弄清楚异步的东西在打字稿中是如何工作的,当我运行我的编译器时,它会产生这个错误。这是我要编译的代码:
Printer.ts
export class Printer
{
public static printString(string: string, callback): void
{
setTimeout(
() => {
console.log(string)
callback()
},
Math.floor(Math.random() * 100) + 1
)
}
public static printStringWithPromise(string: string): Promise<void>
{
return new Promise<void> ((resolve, reject) => {
setTimeout(
() => {
console.log(string)
resolve()
},
Math.floor(Math.random() * 100) + 1
)
})
}
}
Main.ts
import { Printer } from './Printer';
class App
{
public static run(): void
{
Printer.printStringWithPromise("A")
.then(() => Printer.printStringWithPromise("B"))
.then(() => Printer.printStringWithPromise("C"))
}
}
App.run();
然后我只运行tsc src/Main.ts --outDir out/,它就会向我抛出上述错误。我做错了什么?
【问题讨论】:
-
在您的 tsconfig compiler options 中,检查您的
--target和/或--lib。Promiseconstructor 仅适用于 ES2015 及更高版本。 -
@jcalz 好吧,是的,我必须添加 tsconfig 文件,我必须将
target字段设置为es6,然后可以使用tsc --project PATH_TO_PROJECT --outDir PATH_TO_OUTDIR && nodejs PATH_TO_OUTDIR/Main.js编译和运行它我想知道是否可以不用tsconfig并在命令行中设置所有必需的东西。 -
你可以在命令行afaik上使用
--target -
@jcalz 是的,我现在明白了。它有效。
-
@jcalz:请作为答案发布。
标签: typescript