首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ES6承诺需要在类型记录2.0中进行争论吗?

ES6承诺需要在类型记录2.0中进行争论吗?
EN

Stack Overflow用户
提问于 2016-09-29 15:19:52
回答 1查看 2.7K关注 0票数 4

我正在继续一个现有的打字本项目的工作。最初的项目使用gulp typescript来编译.ts文件,但我使用的是Visual代码附带的tsc编译器。但我不能让ES6承诺起作用。

我已经为ES6承诺安装了一个定义文件:

代码语言:javascript
复制
npm install --save @types/es6-promise

这将在具有承诺定义文件的node_modules文件夹中创建一个目录:

代码语言:javascript
复制
node_modules
    @types
        es6-promise
            index.d.ts
            package.json
            types-metadata.json
            readme.md

tsconfig.json

代码语言:javascript
复制
"files": [
    "src/main.ts",
    "src/game.ts",
    "node_modules/@types/es6-promise/index.d.ts"
]

参考

代码语言:javascript
复制
///<reference path="../node_modules/@types/es6-promise/index.d.ts" />

我假设包含承诺定义文件现在可以工作,但是在编译项目时会出现以下错误:

代码语言:javascript
复制
error TS2314: Generic type 'Promise<T>' requires 1 type argument(s).

当我查看原始代码时,我发现如下:

代码语言:javascript
复制
    private componentsPromise: Promise<Component[]>;
    private startPromise: Promise; // <- error

    public getComponents(): Promise<Component[]> {
        return this.componentsPromise;
    }

    public isStarted(): Promise {   // <-- error
        return this.startPromise;
    }

这是原始项目中的一个简单错误,还是我遗漏了什么?我需要在这里补充些什么才能让承诺再次生效?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-09-29 15:31:24

承诺是通用的,因为它的内部价值各不相同。所以,如果你有一个承诺,你叫.then(x => ...),x的类型是什么?泛型允许类型检查器正确地解释这一点。

要使此工作正常进行,您需要添加特定类型。如果它不包含任何数据,并且纯粹用于解决/拒绝功能,则使用Promise<void>。与其他类型签名一样,这最终也是一个类型签名,因此,如果需要,可以使用Promise<any>

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39774206

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档