尝试弄清楚异步内容在打字稿中是如何工作的,当我运行编译器时会产生此错误。这是我要编译的代码:
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/
,它向我抛出了上述错误。我在做什么错了?
答案 0 :(得分:0)
在您的tsconfig compiler options中,检查您的--target
和/或--lib
。 Promise
constructor仅适用于ES2015及更高版本。祝你好运!
答案 1 :(得分:0)
默认情况下,TypeScript在编译过程中仅包含es3
库,但是promise只与es6
(aka es2015
)一起提供。因此,您必须在es6
数组中包含tsconfig.json#compilerOptions#lib
-以下为最小示例。
tsconfig.json
{
"compilerOptions": {
"lib": ["es6"]
},
"files": ["index.ts"]
}
index.ts
const prom = new Promise(resolve => resolve('hello world'));
测试脚本
npm i typescript
tsc # <- should not throw any error